ダイアログボックスにあるボタンのクリックをシミュレートします。ボタンのウィンドウのハンドルを指定すると、どのようにボタンのクリックをシミュレートできますか?
私はそのウィンドウのハンドルを持っています。これはAbort/Retry/Ignoreの種類のウィンドウです。
私のニーズに合わないため、X座標とY座標を持つクリックをシミュレートすることはしたくありません。
ダイアログボックスにあるボタンのクリックをシミュレートします。ボタンのウィンドウのハンドルを指定すると、どのようにボタンのクリックをシミュレートできますか?
私はそのウィンドウのハンドルを持っています。これはAbort/Retry/Ignoreの種類のウィンドウです。
私のニーズに合わないため、X座標とY座標を持つクリックをシミュレートすることはしたくありません。
は、あなたが(FindWindowEx
を使用して)をクリックするボタンへのハンドルを見つけ、クリックするだけメッセージを送る:
SendMessage(hButton, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(0, 0));
SendMessage(hButton, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(0, 0));
これは機能しますが、それは敬語ではありません。 WinAPIはウィンドウのボタンの1つを直接「クリック」する機能をサポートしていませんか?そして私はSpy ++を使用してボタンの名前を取得しなければなりませんでしたが、これは簡単ではありませんでした。 –
@AronBogutaターゲットボタンハンドルを見つけるまで、 'EnumChildWindows'を使ってすべてのウィンドウを列挙できます。 WinAPIに、ウィンドウのボタンを直接「クリック」する機能が含まれていた場合、それはまさに同じことでした。また、WinAPIはボタンを(子)ウィンドウとして扱います。 –
ありがとう、私はすでにEnumChildWindowsについて知っていますが、私はWinAPIからさらに多くのメッセージを期待しています:) –
OKのためにこれを試してみてください:
SendMessage(hWnd, WM_COMMAND, 1, NULL);
OKボタンはありません。私は言ったように中止/再試行/無視をクリックしたいと思います。中止 –
SendMessage(hParent, WM_COMMAND, MAKEWPARAM(IdOfButton, BN_CLICKED), (LPARAM)hwndOfButton);
よくわからないのであれば、通常はhwndOfButton
がなくても出ることができます - ダイアログの実装に依存します!
使用ケースに応じて、SendMessage
またはPostMessage
にすることができます。
他のすべての答えを試してみました。これは私のために働いた唯一のものです。 –
は、ボタンのHWNDにBM_CLICK
メッセージを送る:
SendMessage(hButton, BM_CLICK, 0, 0);
WM_LBUTTONDOWN
と
WM_LBUTTONUP
メッセージを受信するためのボタンを引き起こし
、および親をユーザーが物理的にクリックされたかのように、BN_CLICKED
通知を受信しますボタン。ここで
が完了関数です
void clickControl(HWND hWnd, int x, int y)
{
POINT p;
p.x = x; p.y = y;
ClientToScreen(hWnd, &p);
SetCursorPos(p.x, p.y);
PostMessage(hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));
}
これは元の質問に答えることはできませんが、それは私が探していたもの、感謝のために私を助けました! –
これは助けになるだろうか? http://forums.codeguru.com/showthread.php?377394-Windows-SDK-User-Interface-How-can-I-emulate-mouse-events-in-an-application – Friedrich
これは正常ではありません。 assertがどこかで失敗し、デバッグバージョンを実行しているようです。 _set_abort_behavior()を試してください。 –