仅移动鼠标时,发送消息模拟操作有效.有没有办法解决这个问题

本文关键字:有没有 有效 解决 问题 操作 模拟 鼠标 移动 消息 | 更新日期: 2023-09-27 18:33:08

我正在游戏窗口中进行'拖动'操作。我想在一个地方mouse_down,然后mouse_up另一个地方。

下面是 c# 代码:

uint Iparm = makeDWord((ushort)x, (ushort)y);
IntPtr xd = new IntPtr(Iparm);
uint Iparm2 = makeDWord((ushort)x2, (ushort)y2);
IntPtr xd2 = new IntPtr(Iparm2);
SendMessage(p, (uint)0x201, (IntPtr)0x1, xd); // down button (start x,y)
SendMessage(p, (uint)0x202, (IntPtr)0x0, xd2); // up button (final x,y)

我已经将该代码与 c# 表单中的按钮(假设名为 START 的按钮)连接起来。当我按下开始并继续移动鼠标时,它工作得很好。但是当我只是按 START 并等待操作(不移动屏幕上的光标)时,没有任何反应。我在按下表单中的按钮时用 spy++ 检查了游戏的窗口,按下该按钮的两种方式(移动/不移动光标)之间没有区别。

我忘了补充一点,在移动光标时,即使窗口最小化也会发生操作(这很酷)

是什么导致了我的问题? : P

编辑:

WM_MOUSEDOWN = 0x201;
WM_MOUSEUP = 0x202;

该代码放置在函数中,p 是窗口句柄,按钮 START 执行该函数。

正如我之前所说,当我移动光标时,代码工作得很好

仅移动鼠标时,发送消息模拟操作有效.有没有办法解决这个问题

尝试在向下和向上之间使用WM_MOUSEMOVE消息呼叫SendMessage

改用SendInput