我想要点击一个游戏中的一个点(x:360,y:101,分辨率为800x600),改变窗口的宽度不会影响这个点的坐标,但是,改变高度确实如此。高度越大,该点的X坐标向右移动的越多。 Y坐标也会改变,但速度较慢,不足以让我错过点击,但帮助计算它也会有所帮助。
代码是无关紧要的,但在这里
WinGetPos, ,,width,height,A
newX := ??? // Need help here
newY := height * 0.168 // Bad, but works
MouseMove, newX, newY
Click
一些额外的信息,是游戏的流亡之路。它允许您使宽度尽可能大,这使您可以看得更远。在保持相同宽度的同时降低高度也可以让你看得更远,但它不会让你降低到600以下。
目标的位置似乎取决于两件事:(1)窗口的边框和(2)垂直分辨率。如果我们只关注客户区(即不包括其边框和标题栏的窗口)并将坐标系的原点放在此区域的左上角,则要以800x600分辨率点击的位置为(356, 78)
。我们可以通过实际分辨率的高度比直接缩放这一点,最后添加边框和标题栏。因此,最终的公式将是:
newX = borderLeft + 356 * verticalResolution / 600
newY = borderTop + titleBarHeight + 78 * verticalResolution / 600
有趣的是,两个屏幕截图中的边框不同。 800x600镜头的左边框为4px,而另一个镜头的边框为1px。我假设这是由于截图并假设左边框为4px。顶部边框和标题栏高度始终为23px。
因此,你有:
newX = 4 + 356 * verticalResolution / 600
newY = 23 + 78 * verticalResolution / 600
它提供了1437x714截图中的位置(428, 116)
,看起来是正确的,除了左边框的3px差异。