仅在移动鼠标时,SendMessage模拟操作正在工作。有办法解决这个问题吗?

时间:2012-05-04 17:22:32

标签: c# sendmessage

我正在游戏'窗口中进行'拖动'操作。我想在一个地方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并继续移动我的鼠标时,它完美地工作。但是,当我只是按下START并等待操作(没有在屏幕上移动光标)时,没有任何反应。我按下了我的表格中的按钮,用间谍++检查了游戏的窗口,按下该按钮的两种方式(移动/不移动光标)没有区别。

我忘记在移动光标时添加它,即使窗口最小化(非常酷)也会发生动作

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

修改

WM_MOUSEDOWN = 0x201;
WM_MOUSEUP = 0x202;

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

改为使用SendInput