我正在编写一个与 Web 浏览器游戏交互的 C# 应用程序(不是出于恶意目的,只是为了挑战自动化),并通过移动鼠标、单击然后将鼠标移回前一点来进行交互。
我现在要做的是在不移动光标的情况下单击该点,以便在鼠标运行时移动鼠标不会导致误点击。我找到了 WindowFromPoint 和 SendMessage 挂钩,可用于单击该位置,并且在我的测试中,我能够使这种组合起作用。但是,当试图让这种钩子组合在我的游戏所在的 Chrome 网络浏览器上运行时,它不会点击。
我假设正在收集不正确的句柄,因为 chrome 是如此复杂。但是我认为它会起作用的方式是 WindowFromPoint 将为我提供当前打开的浏览器选项卡的句柄,因此 SendMessage 将能够在我想要的位置执行单击。
这是我正在使用的代码,start 和 end 都是 Point 对象,它们位于我要单击的位置:
IntPtr hWnd = WindowFromPoint(start);
if(hWnd != IntPtr.Zero) {
SendMessage(hWnd, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
IntPtr hWnd2 = WindowFromPoint(end);
SendMessage(hWnd2, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
为了在浏览器选项卡中单击游戏,我应该做些什么不同的事情?