我在游戏中有一个要单击的点(分辨率为800x600,x:360,y:101),更改窗口的宽度不会影响该点的坐标,但是更改高度做。高度越大,此点的X坐标向右移动的程度就越大。 Y坐标也会发生变化,但速度变慢,不足以让我错过点击次数,但也有助于计算它。
代码无关紧要,但在这里
WinGetPos, ,,width,height,A
newX := ??? // Need help here
newY := height * 0.168 // Bad, but works
MouseMove, newX, newY
Click
一些额外的信息,是游戏《流放之路》。它使您可以将宽度设置为所需的最大范围,从而可以看得更远。在保持相同宽度的情况下降低高度也可以使您看得更远,但这不会让您将其降低到600以下。
答案 0 :(得分:0)
目标的位置似乎取决于两件事:(1)窗口的边框和(2)垂直分辨率。如果我们仅关注客户区域(即不包括其边框和标题栏的窗口),并将坐标系的原点放在该区域的左上角,则您要以800x600分辨率单击的位置为{{1 }}。我们可以通过实际分辨率的高度比例直接缩放此点,最后添加边框和标题栏。因此,最终公式将是:
Sesion.Get
有趣的是,您的两个屏幕截图中的边框是不同的。 800x600镜头的左边框为4px,而另一个边框为1px。我认为这是由于屏幕截图造成的,并假设左侧边框为4px。顶部边框和标题栏高度始终为23px。
因此,您有:
ExpiresAtTime
在1437x714屏幕截图中为您提供了(356, 78)
的位置,该位置看起来正确,除了左边框造成的3px差异。