アプリAから、アプリB上のボタンをクリックするには?

解決


悩んでるタール人  2006-12-02 08:46:42  No: 97327

VBで作られたアプリケーションA、Bがあります。

このふたつは独立していて、統合させることができません。

アプリA内にある判定条件で、アプリBのコマンドボタンを

押すような処理を行いたいのですが、いまいち分かりません。

環境はWinXP  SP2  VB6  SP5  です。
アプリA、Bともに同一マシン上にあります。

現状では、API関数を利用して、アプリAの処理中に

AppActivate  "アプリB"    を発行して、アプリBを

アクティブにし、  keybd_event  で、エンターキーの

押下処理を発行すると、そのときフォーカスのあるコマンド

ボタンがクリックされて処理が走ります。

ところが、アプリBには大量のボタンが配置されているため、

目的のボタンを一撃で取得する方法が分からず、途方にくれ

ています。どなたか回答をいただけないでしょうか?


ヤマ@文系  2006-12-02 10:03:10  No: 97328

FindWindowEXでコマンドボタンのハンドルを検索します。
GetWindowTextでキャプションを取得できるのでハンドルを検索
する際に文字列とキャプションを比較して目的のボタンのウインドウハンドルを取得します。
sendmesseageなどでWM_LbuttonDown  WM_Lbuttonupを
送信してやればよろしいかと思います。


Blue  2006-12-02 17:42:01  No: 97329

>sendmesseageなどでWM_LbuttonDown  WM_Lbuttonupを
ボタンのクリックの場合、親ウィンドウに  WM_COMMAND ではないでしょうか?

対象のアプリが固定であれば、あらかじめボタンのコントロールIDを
調べておくことになります。
(Spy++を利用したり、FindWindowExで全て列挙してGetDlgCtrlIDでコントロールIDは取得できる)


悩んでるタール人  2006-12-04 01:59:47  No: 97330

ヤマ@文系さま  Blueさまへ

メニュー内にボタン押下の処理へ飛ばす記述を作り、「ctrl」+「a」などの

ショートカットを作り、keybd_eventを発行して呼び出す、などと不恰好な

ことをしていましたが、ご指示にあったFindWindowEXを検索し、参考サイト

をめぐることで解決しました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加