私はマウスカーソルを画面上のX、Y位置に移動し、マウスダウンイベントを送信し、カーソルをもう一度移動してマウスを放して線を描くC++の描画キャンバスアプリケーション/ウィンドウにマウスの上下のイベントを送信しようとしています
私は、SendInputとmouse_eventsを使っていくつかの成功を試みましたが、私が探していたものではありませんでした。
int main(int argc, char *argv[])
{
tagINPUT inp;
tagMOUSEINPUT mi;
DWORD moveFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);
DWORD downFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
DWORD upFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);
mi.dwFlags = moveFlags;
mi.dx = 5000;
mi.dy = 2000;
inp.type = INPUT_MOUSE;
inp.mi = mi;
SendInput(1, &inp, sizeof inp);
tagMOUSEINPUT mi2;
tagINPUT inp2;
SetCursorPos(1500, 500);
mi2.dwFlags = downFlags;
inp2.type = INPUT_MOUSE;
inp2.mi = mi2;
SendInput(1, &inp2, sizeof inp2);
SetCursorPos(500,200);
mi2.dwFlags = upFlags;
inp2.type = INPUT_MOUSE;
inp2.mi=mi2;
SendInput(1, &inp2, sizeof inp2);
return 0;
}
非常に基本的な操作で、移動、クリック、移動、および解放するだけです。
基本的に、これは通常のユーザーコントロールでうまくいきます。 Chromeがトップウィンドウの場合は、テキストをハイライト表示します。 x/yを移動して、画面上のボタン/ユーザーコントロールにすることができます。
これはMSPaint IFに必要な線を描画し、消しゴム機能が選択されている場合にのみ表示されます。私がBrushtoolを使用しようとすると、何も起こりません。フラッシュウィンドウ(http://doodle.no.de)で描画しようとしている場合も同じです。
私は、左下と左下に0x0201と0x0202を使用しようとしましたが(これらはWM_と同等です)、まったく同じように動作します。
アイデア?