gpt4 book ai didi

c# - 使用 SendInput 模拟 XButton 输入

转载 作者:行者123 更新时间:2023-11-30 21:17:46 25 4
gpt4 key购买 nike

我使用 SendInput 来模拟鼠标输入,到目前为止我可以成功地模拟左键、右键和中键。但是,我似乎无法正确模拟 xButtons。我正在定义一个输入结构如下:

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;
}
}

最佳答案

事实证明我试图指定在错误的位置按下了哪个按钮。 i.mi.dwFlags 应仅指定 Win32.MOUSEEVENTF.XDOWNWin32.MOUSEEVENTF.XUP。应使用 i.mi.mouseData 设置按下的按钮。

因此,为了模拟 x 按钮输入,我将执行以下操作:

Win32.INPUT i = new Win32.INPUT();
i.type = Win32.INPUTF.MOUSE;
i.mi.dx = 0;
i.mi.dy = 0;
switch (e.Button)
{
case System.Windows.Forms.MouseButtons.XButton1:
i.mi.mouseData = (uint)Win32.MOUSEEVENTF.XBUTTON1;
break;
case System.Windows.Forms.MouseButtons.XButton2:
i.mi.mouseData = (uint)Win32.MOUSEEVENTF.XBUTTON2;
break;
default:
i.mi.mouseData = 0;
break;
}

i.mi.time = 0;
i.mi.dwExtraInfo = UIntPtr.Zero;
i.mi.dwFlags = Win32.MOUSEEVENTF.XUP;
Win32.SendInput(1, ref i, System.Runtime.InteropServices.Marshal.SizeOf(new Win32.INPUT()));

关于c# - 使用 SendInput 模拟 XButton 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4624433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com