VBで作られたアプリケーションA、Bがあります。
このふたつは独立していて、統合させることができません。
アプリA内にある判定条件で、アプリBのコマンドボタンを
押すような処理を行いたいのですが、いまいち分かりません。
環境はWinXP SP2 VB6 SP5 です。
アプリA、Bともに同一マシン上にあります。
現状では、API関数を利用して、アプリAの処理中に
AppActivate "アプリB" を発行して、アプリBを
アクティブにし、 keybd_event で、エンターキーの
押下処理を発行すると、そのときフォーカスのあるコマンド
ボタンがクリックされて処理が走ります。
ところが、アプリBには大量のボタンが配置されているため、
目的のボタンを一撃で取得する方法が分からず、途方にくれ
ています。どなたか回答をいただけないでしょうか?
FindWindowEXでコマンドボタンのハンドルを検索します。
GetWindowTextでキャプションを取得できるのでハンドルを検索
する際に文字列とキャプションを比較して目的のボタンのウインドウハンドルを取得します。
sendmesseageなどでWM_LbuttonDown WM_Lbuttonupを
送信してやればよろしいかと思います。
>sendmesseageなどでWM_LbuttonDown WM_Lbuttonupを
ボタンのクリックの場合、親ウィンドウに WM_COMMAND ではないでしょうか?
対象のアプリが固定であれば、あらかじめボタンのコントロールIDを
調べておくことになります。
(Spy++を利用したり、FindWindowExで全て列挙してGetDlgCtrlIDでコントロールIDは取得できる)
ヤマ@文系さま Blueさまへ
メニュー内にボタン押下の処理へ飛ばす記述を作り、「ctrl」+「a」などの
ショートカットを作り、keybd_eventを発行して呼び出す、などと不恰好な
ことをしていましたが、ご指示にあったFindWindowEXを検索し、参考サイト
をめぐることで解決しました。
ありがとうございました。
ツイート | ![]() |