SendMessage ButtonUp / Down处理x / y坐标

时间:2015-06-11 19:34:23

标签: c# .net handle sendmessage

我正在扩展我为“clicker”浏览器游戏(点击器英雄,糖果点击器等)制作的小型机器人。

最初,我发送了这样的点击:

 var screenPoint = Cursor.Position;
 var handle = WindowFromPoint(screenPoint);
 if (handle != IntPtr.Zero)
 {
     SendMessage(handle, Win32.WM_RBUTTONDOWN, IntPtr.Zero, IntPtr.Zero);
     SendMessage(handle, Win32.WM_RBUTTONUP, IntPtr.Zero, IntPtr.Zero);              
 }

但这显然导致窗口问题需要在前面。

我希望能够向窗口句柄本身发送点击,因此我得到了这样的句柄:

winHandle = Win32.FindWindow("PlayerClient", "Clicker Heroes");
SendMessage(winHandle , Win32.WM_RBUTTONDOWN, IntPtr.Zero, IntPtr.Zero);
...

现在的问题是,如何指定我希望它发送点击的Point或xy坐标?该文档提到了关于LParam采取一个点的事情,但没有提供任何例子。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

自:

您需要通过SendMessage参数将坐标传递给lParam

LRESULT CALLBACK SendMessage(
  _In_ HWND   hwnd,
  _In_ UINT   uMsg,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);
  

lParam的

     

低位字指定光标的x坐标。坐标相对于客户区的左上角。

     

高位字指定光标的y坐标。坐标相对于客户区的左上角。

如果你想要一个帮助函数来构建LPARAM我建议从以下32位程序开始:

public static LPARAM BuildLParam(ushort low, ushort high)
{
    return (LPARAM)(((uint)high << 16) | (uint)low);
}