为什么鼠标指针会移动到意外的位置



编辑:

我意识到所有者运行的是1080p,我的屏幕是1440p。。你认为这有什么不同吗?是的,的确如此。请参阅下面我的评论。

我有一个未维护的项目,我想继续工作,并试图理解代码。然而,很明显我错过了一些东西,我没有注意到。基本上需要什么:

  1. 来定位窗口和极小映射的偏移
  2. 根据提供的偏移量将光标移动到所需位置

但无法将鼠标移动到所需位置。它确实会移动鼠标,但最终会移动到其他地方,我找不到原因。随附演示截图。

这是代码示例:

X

window_capture.py

import win32gui
from typing import List
import time
class WindowCapture():
CLIENT_TOP_BORDER: int = 28.0
CLIENT_SIDE_BORDER: int = 43.0
OFFSET_MINIMAP_X: float = 1359.0
OFFSET_MINIMAP_Y: float = 83.0
OFFSET_RUN_X: float = 0.0
OFFSET_RUN_Y: float = 0.0
OFFSET_LOGOUT_X: float = 0.0
OFFSET_LOGOUT_Y: float = 0.0
def __init__(self):
self.window = self.get_window('Runelite')
self.center_screen = self.get_center_window(self.window)
self.center_minimap = self.get_center_minimap(self.window)
self.run_button = self.get_run_button(self.window)
self.logout_cross = self.get_logout_cross(self.window)
def get_window(self, windowname: str) -> List[int]:
'''Returns the position of the window and the size of the window excluding the borders.'''
# Get window handle.
hwnd = win32gui.FindWindowEx(None, None, None, windowname)
# Set window to foreground.
win32gui.SetForegroundWindow(hwnd)
# Get the window size.
rect = win32gui.GetWindowRect(hwnd)
# print("debug rect", rect)
# Adjust size for borders
# x(left) = 1280
x = rect[0]
# y(top) = 28
y = rect[1] + self.CLIENT_TOP_BORDER
# w(right) = 2560 - 43 = 2517
w = rect[2] - self.CLIENT_SIDE_BORDER
# h(bottom) = 1401 - 28 = 1373
h = rect[3] - self.CLIENT_TOP_BORDER
print(x, y, w, h)
return [x, y, w, h]

好吧,又花了一天时间,但我设法(至少目前(理解了什么是什么,并得到了我的结果。

最初的开发人员(我想(在不同的分辨率下进行了窗口捕获,所以鼠标移动与他的分辨率兼容,因此对我来说不起作用。我已经更新了窗口捕获中的calc并使其起作用。

我将继续学习,并感谢您的打印调试。它确实有帮助:(

最新更新