7

C ++を使用して、マウスを動かさずに特定の位置でマウスクリックイベントを作成する方法(つまり、マウスで位置がクリックされたとコンピューターに認識させること)

4

2 に答える 2

6

Windows APIのSendInput関数で開始できます。メソッドの定義、その入力パラメーター、および戻り値については、次のリンクを参照して
ください。 aspx

ページ内のリンクをたどると、関数で使用される構造とデータ型について詳しく知ることができます。

更新:このようなものから始めることができます

#include<Windows.h>
int main()
{
    INPUT input;
    input.type=INPUT_MOUSE;
    input.mi.dx=0;
    input.mi.dy=0;
    input.mi.dwFlags=(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP);
    input.mi.mouseData=0;
    input.mi.dwExtraInfo=NULL;
    input.mi.time=0;
    SendInput(1,&input,sizeof(INPUT));
    return 0;
}

これにより、マウスが自動的に画面の左上隅に移動し、右クリックが行われます。ここで、マウスを動かさずに画面のどこかをクリックするつもりなら、SendInput() を使用することはできないと思います。マウスの移動はプログラムが自動的に行うため、心配する必要はありません。それが、「MOUSEEVENTF_MOVE」フラグがプログラムに指示することです。フラグを使用しない場合、クリックはマウスの現在の位置で行われます。

于 2012-09-11T05:42:00.803 に答える
3

SendInput() 関数を使用して、マウス クリックとキーボード ストロークをエミュレートできます。

SendInput 関数は、INPUT 構造体のイベントをキーボードまたはマウスの入力ストリームにシリアルに挿入します。これらのイベントは、ユーザー (キーボードまたはマウスを使用) または keybd_event、mouse_event への呼び出し、または SendInput へのその他の呼び出しによって挿入された、他のキーボードまたはマウス入力イベントとは混在しません。

SendMessage()またはPostMessage()を使用して、ボタンを押すメッセージを送信することもできます。

SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));

、しかし信頼性は低いです。この方法WM_LBUTTONUPでは、アプリケーションでイベントを処理する方法によっては、後で送信する必要がある場合もあります。

この質問も確認してください。受け入れられた回答はかなり詳細です。

于 2012-09-11T05:43:24.697 に答える