我申请了一些自动处理程序。
它在C#中使用了SendInput
我在PC上测试了该代码,效果很好。
但是现在我在其他PC上安装了该应用,但无法正常运行。
我附上了一些代码片段以供理解。
public static void ClickLeftMouseButton()
{
INPUT mouseDownInput = new INPUT();
mouseDownInput.type = SendInputEventType.InputMouse;
mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));
INPUT mouseUpInput = new INPUT();
mouseUpInput.type = SendInputEventType.InputMouse;
mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP;
SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
}
public static void ClickRightMouseButton()
{
INPUT mouseDownInput = new INPUT();
mouseDownInput.type = SendInputEventType.InputMouse;
mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTDOWN;
SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));
INPUT mouseUpInput = new INPUT();
mouseUpInput.type = SendInputEventType.InputMouse;
mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTUP;
SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
}
public static void SetMousePosition(int x, int y, int width, int height)
{
INPUT mouseMoveInput = new INPUT();
mouseMoveInput.type = SendInputEventType.InputMouse;
mouseMoveInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE | MouseEventFlags.MOUSEEVENTF_ABSOLUTE;
mouseMoveInput.mkhi.mi.dx = 65535 * x / width;
mouseMoveInput.mkhi.mi.dy = 65535 * y / height;
SendInput(1, ref mouseMoveInput, Marshal.SizeOf(new INPUT()));
}
从代码片段中可以看到,我调用了2个函数。
MouseSimulator.SetMousePosition(Convert.ToInt16(mAction.x_pos), Convert.ToInt16(mAction.y_pos), 1920, 1080);
MouseSimulator.ClickLeftMouseButton();
但是在另一台PC上,它不起作用。
我只能通过Chrome RDP或TeamViewer访问该PC。
我发布了我的应用程序,并在该PC上安装了该软件包。
但是SendInput不起作用。
我该怎么办?
两台PC(我的和其他)的Windows操作系统都是Win10。
答案 0 :(得分:0)
要执行SendInput,需要具有管理员权限。