2

画面に GUI を表示して実行するコンパイル済みのバイナリ プログラムがあるとします。Win32 の別のプログラムからツールバーにアクセスし、ボタンを見つけてクリックする必要があります。

ツールバーの Hwnd を見つける方法は知っていますが、ツールバーのボタンを列挙する方法がよくわかりません。Win32 呼び出しでそれを行う方法はありますか?

ツールバーの下にボタン ハンドルを表示できる Spy++ のようなツールはありますか? Spy++ はそれを行いません。

ありがとう

4

4 に答える 4

0

ボタンをクリックすると、WM_COMMAND メッセージがメイン ウィンドウに送信されます。ツールバー ボタンのクリックをシミュレートすることはあまり実用的ではありません。より良い方法は、Spy++ を使用して WM_COMMAND メッセージとそのパラメーターを見つけることです。次に、プログラムでこの同じ WM_COMMAND メッセージを送信します。

于 2013-07-18T13:15:44.840 に答える
0

AFAIR をHWND呼び出すことで、ツールバー ボタンの を取得できますGetDlgItem。最初のパラメータはHWNDツールバーの で、2 番目のパラメータはボタンの ID (TBBUTTON構造に設定したもの) です。このアプローチを使用するには、ボタン ID が必要です。

===編集===

@graham.reeds によって提案された EnumChildWindows に加えて、 を試すことができますSendInput。ターゲット ウィンドウを最前面に移動し、ツールバーの左上隅の画面座標を (その HWND を使用して) 計算し、ターゲット ボタンの中央の XY オフセットを追加し、マウス クリックをその位置に送信します。(私はこのアプローチを使用して、IE ウィンドウ内にレンダリングされた Flash および Silverlight オブジェクトをクリックすることに成功しました。)

于 2013-07-18T13:08:39.663 に答える