No.3ベストアンサー
- 回答日時:
・電卓のウィンドウハンドル取得
・電卓ウィンドウの中のEditコントロールのウィンドウハンドル取得
・取得したEditコントロールのウィンドウハンドルめがけてWM_GETTEXTメッセージを送る
このような手順になります。
後半二つについては、C++ですが、以下のページが参考になります。
http://homepage2.nifty.com/DSS/VCPP/API/GetWindo …
最初の、電卓のウィンドウハンドルについては、手っ取り早いのは「電卓」という文字列でFindWindow APIを使うことですが、他にも方法はあります。
APIについてそれ相応の知識が必要になります。
ここに全てのソースを記すのはちょっと厳しいので、色々探してみてください。
ありがとうございます。
APIを使っていろいろと試しているのですが以下の記述(長くなってしまったので一部分ですが・・・)でテキストに値が返ってきました。ですが、問題なのが値が返ってきたり返ってこなかったりするのです。まだAPIというものを良く理解していないので何故なのか検討もつきません。もし何かお気づきの点がありましたら教えてください。よろしくお願いします。
Private Sub Command1_Click()
Dim INST As Long
Dim PROCESS As Long
Dim MODORITI As Long
Dim ENDWORK As Long
Dim lngWindWnd As Long 'ウィンドウハンドル
Dim ret As Long
Dim hCalc As Long
Dim TextBuff(20) As Byte 'メモ帳の文字列格納バイト配列
Dim EditTextLen As Long 'メモ帳の文字列サイズ
Dim gTextBuff As String '取得した文字列
' システムエディタを起動
INST = Shell("Calc", 2)
'システムエディタのプロセスを取得する
PROCESS = OpenProcess(1024 Or 1048576, True, INST)
'アプリケーションタイトルより、ウィンドウハンドルを得ます
lngWindWnd = FindWindow(vbNullString, "電卓")
hCalc = FindWindowEx(lngWindWnd, 0, "Edit", "")
'システムエディタが閉じられるまで処理を中断(ループさせる)
Do While 1
'メモ帳の文字列サイズ取得
EditTextLen = GetEditboxLenB(hCalc)
'メモ帳からテキスト取得
ret = SendMessage(hCalc, WM_GETTEXT, EditTextLen + 1, TextBuff(0))
MODORITI = GetExitCodeProcess(PROCESS, ENDWORK)
'システムエディタが終了したら処理中断(ループ)を解除する
If ENDWORK <> 259 Then
MsgBox "shori end"
Exit Do
End If
Loop
'ANSI→ UNICODE変換
gTextBuff = StrConv(TextBuff(), vbUnicode)
'GetEditboxText = strNullCut(gTextBuff)
Text1.Text = strNullCut(gTextBuff)
End Sub
No.5
- 回答日時:
No.3のspace_needleです。
ソースを拝見したのですが、もしかしたら電卓を閉じる寸前に表示されていた内容を取得したい、ということでしょうか。
私はてっきり、「内容の取得」ボタンのようなものがあって、それを押したときに取得するのかと思っていました。
もし閉じる寸前の内容、ということであれば、値が返ってきたり返ってこなかったり、という問題を解決するのは、私が知る限り不可能です。
電卓が閉じられるときに、Editコントロールの内容は破棄されます。
破棄されるのが先か、取得するのが先か、という競争になってしまうからです。
また、ループ中でメッセージを投げ続けるのも、動作が不安定になる原因になりますので、危険な処理です。
No.2のpopesyu様の回答のように、電卓を自作するほうが良いかと思います。
ご回答ありがとうございました。
電卓を閉じる寸前に表示されていた内容を取得したかったのですが、あきらめました。でもspace_needlさんのおっしゃるような「内容の取得」ボタンを使用して取得することにしました。結果、上手くいきました。
本当にありがとうございます。
No.4
- 回答日時:
Windows XP に標準でついている電卓なら
計算結果がコピー(Ctrl+C)できますので
クリップボード経由で 反映できるかも
他のバージョンは。。。
わかりません^^;
No.1
- 回答日時:
電卓アプリに、結果を外部に返すインターフェイスが無ければ、無理だと思いますよ。
もしインターフェイスが無いのに電卓内部の処理を盗み見られるのであれば、ソフトウェアとしてのセキュリティに問題があることになりますよね(ブラウザアプリ内部のデータを盗み見できるのであれば、それを会社のPCなどに仕掛ければ、パスワードや昼休みの個人利用時のID、パスワードなどが収集できてしまいます)。
もしかしたら的外れかもしれません。
ありがとうございます。そうですか。まだまだ未熟者で知識が浅いので勉強になりす。
でももう少しAPIなどの勉強もかねてねばってみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VB6で電卓を作っているのですが誰か教えてください
Visual Basic(VBA)
-
visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
作成したウインドウのサイズを...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
ウィンドウのサイズ変更について
-
カーソルが自分のウィンドウか...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
c++/cli .NET Formアプリケー...
-
VBAで単一ブック複数窓を閉じる...
-
他のアプリケーションの終了処理
-
ExcelのBOOKが消えた!
-
[VBA] UserForm を Excel の W...
-
エクセルの一行目を固定して見...
-
検索の画面がでなくなってしま...
-
他アプリの操作(メニューバー)
-
WM_PAINT 処理が完了したタイミ...
-
C言語でWin32APIを使い、子ウィ...
-
最大化時のフルスクリーン
-
【VB2008】 マウス操作の一時的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
Vba LongPtrについて教えてくだ...
-
「&HFFFF」「&H1A」とは?
-
MFC ダイアログ上のID取得につ...
-
作成したウインドウのサイズを...
-
[VBA] UserForm を Excel の W...
-
ラジオボタンの初期指定
-
【VB2008】 マウス操作の一時的...
-
ExcelVBAでAPIを使って外部ウイ...
-
VBAで単一ブック複数窓を閉じる...
-
EnumChildWindowsの使い方(VBA)
-
隠れたウィンドウの画面をキャ...
おすすめ情報