私はSendInputを使用してマウス入力をシミュレートしています。これまでのところ、左、右、中央のクリックを正常にシミュレートできます。しかし、xButtonを適切にシミュレートすることはできません。私は次のように入力構造を定義しています:SendInputを使用したXButton入力のシミュレーション
Win32.INPUT i = new Win32.INPUT();
i.type = Win32.INPUTF.MOUSE;
i.mi.dx = 0;
i.mi.dy = 0;
i.mi.mouseData = 0;
i.mi.time = 0;
i.mi.dwExtraInfo = UIntPtr.Zero;
i.mi.dwFlags = MouseButton(e.Button, true);
Win32.SendInput(1, ref i, System.Runtime.InteropServices.Marshal.SizeOf(new Win32.INPUT()));
MouseButtonは次のように定義されています。
private Win32.MOUSEEVENTF MouseButton(MouseButtons mb, bool up)
{
switch (mb)
{
case MouseButtons.Left:
return up ? Win32.MOUSEEVENTF.LEFTUP : Win32.MOUSEEVENTF.LEFTDOWN;
case MouseButtons.Right:
return up ? Win32.MOUSEEVENTF.RIGHTUP : Win32.MOUSEEVENTF.RIGHTDOWN;
case MouseButtons.Middle:
return up ? Win32.MOUSEEVENTF.MIDDLEUP : Win32.MOUSEEVENTF.MIDDLEDOWN;
case MouseButtons.XButton1:
return up ? Win32.MOUSEEVENTF.XBUTTON1|Win32.MOUSEEVENTF.XUP : Win32.MOUSEEVENTF.XBUTTON1 | Win32.MOUSEEVENTF.XDOWN;
case MouseButtons.XButton2:
return up ? Win32.MOUSEEVENTF.XBUTTON2 | Win32.MOUSEEVENTF.XUP : Win32.MOUSEEVENTF.XBUTTON2 | Win32.MOUSEEVENTF.XDOWN;
default:
return 0u;
}
}
はあなたのWin32クラスを構築するには、このリンクを使用しました:
だから私は、次の操作を行いますxボタン入力をシミュレートするには? http://www.pinvoke.net/default.aspx/user32/SendInput.html – digEmAll
私は使用しているWin32クラスをビルドしませんでしたが、私が使用しているものはpinvoke.net/defaultにあるものと同じではありません.aspx/user32/SendInput.htmlと同じ動作をしますが、 – Alex