0

C# でマウス クリックをシミュレートする方法の次のコードを使用していますか? そして、それが機能しないことがわかりました。コードは次のとおりです。

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

    private const int MOUSEEVENTF_LEFTDOWN = 0x02;
    private const int MOUSEEVENTF_LEFTUP = 0x04;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const int MOUSEEVENTF_RIGHTUP = 0x10;

    public void DoMouseClick()
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 882, 554, 0, 0);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DoMouseClick();
    }

に置き換えmouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENT_LEFTUP...てみましたmouse_event(MOUSEEVENTF_LEFTDOWN & MOUSEEVENT_LEFTUP...が、まだ運がありません。他の人はこれで成功しています...なぜ私はそうではないのですか?

4

1 に答える 1

5

mouse_event() は使用しないでください。SendInput() に取って代わられました。

これには十分な理由があります。mouse_event() の戻り値の型はvoidです。Windows が間違っていることを知らせる方法はありません。SendInput は UINT を返し、0 を返し、GetLastError を介してエラー コードを公開することでエラーを報告します。

そして、あなたは間違いなく間違っています。ボタンを同時に上下させるマウスイベントを送信しても意味がありません。2 回呼び出す必要があります。最初に下に、次に上に。

于 2012-07-13T19:46:18.757 に答える