喫茶XRAYトップページ

[スレッド全体
]

[1841] 他のアプリのボタン押下を取得返信 削除
2008/8/25 (月) 11:53:27 satot
市販のアプリの特定のボタンを、ユーザーが押したタイミングで、その
アプリの特定のEditBoxにある文字列を、Delphi側で取得したいのですが、
可能でしょうか。ボタンを押す方法は、拝見いたしたのですが......
よろしくお願いします。

[1842] 他のアプリのエディットの値を取得返信 削除
2008/8/25 (月) 22:21:13 Mr.XRAY
▼ satotさん

> アプリの特定のEditBoxにある文字列を、Delphi側で取得したいのですが、

他のアプリの場合,全てのコントロールの値が簡単に取得できるわけでは
ありませんが,satotさんのいうEditBoxが,ウィンドウズのエディットコン
トロール(テキストボックス)であれば比較的簡単に取得可能です.

そのためには,そのコントロールのハンドル値を取得しなければなりません.
例えば

670_他アプリへ文字列送信と取得670_SendTextThreadAttach)
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/670_SendTextThreadAttach.htm

のリスト1の
Button2Click
Button3Click
Button4Click

では,
RevHandle:=Self.GetFocusWindow(hWindow);
で,フォーカスのあるコントロールのハンドルを取得しています.
(ん? なんでSelfがついているんだ?)

そのハンドルをRevHandleとすれば,すぐ下のコードのように,
文字列を取得するメッセージを送り,取得できます.

問題は,RevHandleに相当する対象コントロールのハンドル値をどう
やって取得するかです.メモ帳などであればアドバイスできますが,
対象のアプリの仕様にもよりますので,具体的な方法のアドバイス
はちょっと無理です.

[1843] Re:他のアプリのボタン押下を取得返信 削除
2008/8/25 (月) 23:31:19 Mr.XRAY
▼ satotさん

失礼!!
他のアブリのボタンクリックを取得でしたね.
いくつか考え方がありますが,
さて,どうしましょう.少し待ってください.

(1) マウス左ボタンのUPをフック
(2) 対象コントロールのWindowProcをサブクラス化

さて...,(1)の方がいいかな〜.

[1844] Re2:他のアプリのボタン押下を取得返信 削除
2008/8/25 (月) 23:49:21 Mr.XRAY
▼ satotさん

> さて...,(1)の方がいいかな〜.

(1) なら
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/260_HookKeyMouseEvent.htm
(2) なら
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSetPrinter/OthesDialog.htm#03

を元に考えていくことになると思います.
ただし,(2)の場合,他のアプリですので,SetWindowLong関数を使用
することになります(第2引数にGWL_WNDPROCを指定).
いずれにしても,対象コントロールのハンドル値を何らかの方法で
取得する必要はあります.

[1845] Re3:他のアプリのボタン押下を取得返信 削除
2008/8/26 (火) 10:31:07 satot
▼ Mr.XRAYさん
深夜に、大変ご丁寧なご指導ありがとうございます。感謝感謝です。
少々ハードルの高いところもありますが、老化防止のため、
頑張ってみようと思います。
念のため、用途を書きますと、
病院の受付機ですが、受付のボタンを押した後、再度本日の診療予定
印刷の操作が必要で、これを一回の受付ボタンクリックで印刷まで済ましたいと
いう目的です。
(けして、「送信ボタン」が押された時に、入力されたパスワードを
読みとるという目的ではありません!)ご安心ください。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82