0

我正在游戏窗口中进行“拖动”操作。我想 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)

我已经将该代码与 ac# 形式的按钮(比如说名为 START 的按钮)连接起来。当我按下 START 并继续移动鼠标时,它可以完美运行。但是当我只是按下 START 并等待操作(不移动屏幕上的光标)时,什么也没有发生。在我的表单中按下按钮时,我已经使用 spy++ 检查了游戏窗口,并且按下该按钮的两种方式(移动/不移动光标)之间没有区别。

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

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

编辑:

WM_MOUSEDOWN = 0x201;
WM_MOUSEUP = 0x202;

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

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

4

2 回答 2

0

尝试在向下和向上之间发送SendMessage一条WM_MOUSEMOVE消息。

于 2012-05-04T17:56:47.123 回答
0

改为使用SendInput

于 2012-05-04T18:07:29.393 回答