例如,我知道像素的rgb代码。我想在这个像素上移动鼠标。我试着在pyautogui上做这个。我得到了鼠标位置与x, y = pyautogui.position()pyautogui.screenshot()和{}的坐标,但在这之后,如果鼠标在某个地方很远,我想把鼠标移到这一点。。。
我也试着在屏幕上找到目标pyautogui.moveTo(pyautogui.center(pyautogui.locateon屏幕('some picture')),但屏幕和屏幕截图分辨率有问题。我家有24英寸显示器,工作时有20英寸显示器,它们的分辨率不同。所以,我的脚本在截图上找不到对象,并返回TypeError: 'NoneType' object is not subscriptable
它在屏幕上显示鼠标的位置。工作正常。在x, y = pyautogui.position()
print(x, y, end='')
在此之后,我将鼠标移动到选定的跳线。工作也很好。在
^{pr2}$
在这之后,我尝试模拟leftclick或keypress。但它不起作用。在pyautogui.click()
或者pyautogui.keyDown('F')
time.sleep(2)
pyautogui.keyUp('F')
这个方法呢def clickleft(x,y):
win32api.SetCursorPos((x,y))
sleep(randint(2,5))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
time.sleep(0.3)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
clickleft(x, y)
和键盘shell.SendKeys("F")
毕竟,我听说我需要直接输入和硬件密钥码。所以我尝试了。在def PressKey(hexKeyCode):
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )
x = Input( ctypes.c_ulong(1), ii_ )
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
def ReleaseKey(hexKeyCode):
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )
x = Input( ctypes.c_ulong(1), ii_ )
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
while (True):
PressKey(0x11)
time.sleep(1)
ReleaseKey(0x11)
time.sleep(1)
但我没有结果。它在记事本中运行良好,但在我刚启动游戏后,脚本在游戏和记事本中都不起作用。剃须刀或血淋淋的老鼠的宏效果很好。但是脚本必须在屏幕上使用pyautogui.locateOnScreen('C:\\picture.PNG')
也许python可以…集成mice的宏。所以我可以把简单的代码和宏结合起来?我已经安装了Nacro Py,MCPY和其他的,但他们没有文档,我不知道它是否正是我需要的。在