我正在扩展我为“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
采取一个点的事情,但没有提供任何例子。
感谢您的帮助。
答案 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);
}