VC++のプログラム上でマウスカーソルを左クリックするには?

解決


TOM  2003-12-12 18:21:38  No: 52876  IP: [192.*.*.*]

任意の位置にマウスカーソルを移動しその位置でクリックするのは可能でしょうか?可能であればどのようにすればよいか。もしよろしければ教えてください。

編集 削除
YuO  2003-12-12 18:43:41  No: 52877  IP: [192.*.*.*]

SetCursorPosでマウスポインタを移動させ,
mouse_eventでクリックのシミュレートすることで実現できます。

編集 削除
moith  2003-12-13 00:28:59  No: 52878  IP: [192.*.*.*]

MFCならば、以下のようにするとよいですね。

POINT point;
point.x = 任意のX座標;
point.y = 任意のY座標;
SetCursorPos( point.x, point.y );
HWND hWnd = WindowFromPoint( point );
SendMessage( hWnd, WM_LBUTTONDOWN, 0, MAKELPARAM( point.x, point.y);

ウィンドウが無効化されていたら使えませんけど...

編集 削除
YuO  2003-12-13 01:02:52  No: 52879  IP: [192.*.*.*]

クリックはUP側で判定することもあるので,WM_LBUTTONDOWNだけ送ることは危険です。
WM_LBUTTONDOWNを送るのであれば,WM_LBUTTONUPも送る必要があります。
#私はUP側で判断しています。

それから,メッセージを直接送るとSetCaptureされている場合誤動作するかもしれませんよ。
#故にmouse_event or SendInputを使う。

編集 削除
tom  2003-12-15 09:06:16  No: 52880  IP: [192.*.*.*]

皆さんご親切にどうもありがとうございました。

編集 削除