将鼠标移动到像素,点击并按下Python键

时间:2016-10-21 20:45:41

标签: python user-interface mouse pixel

例如,我知道像素的rgb代码。我想在这个像素上移动鼠标。我试图在pyautogui上这样做。我得到了x, y = pyautogui.position() pyautogui.screenshot()pyautogui.getpixel()的鼠标位置坐标,但在此之后我想将鼠标移动到这一点,如果鼠标位于远处... 此外,我试图用pyautogui.moveTo(pyautogui.center(pyautogui.locateOnScreen('一些图片'))在屏幕上找到目标,但是屏幕和屏幕截图分辨率存在问题。我家里有24英寸显示器,工作时有20英寸显示器,它们具有不同的分辨率。因此,我的脚本在屏幕截图上找不到对象并返回TypeError: 'NoneType' object is not subscriptable

它显示鼠标在屏幕上的位置。工作正常。

x, y = pyautogui.position()
print(x, y, end='')

在此之后我将鼠标移动到选定的绳索上。工作得很好。

pyautogui.moveTo(x, y, duration = random.randint(2,5))

在此之后我试图模仿leftclick或按键。但它不起作用。

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")

毕竟,我听说我需要DirectInput和硬件密钥代码。所以我试过了。

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)

但我没有结果。它在记事本中工作正常,但在我刚刚启动游戏后,脚本在游戏和记事本中都不起作用。来自Razer或Bloody老鼠的宏工作得很好。但是脚本必须使用

在屏幕上找到一些对象
pyautogui.locateOnScreen('C:\\picture.PNG')

可能是python可以...整合鼠标的宏。所以我可以将简单的代码与宏结合起来?我已经安装了Nacro Py,MCPY和其他人,但他们没有文档,我不知道这正是我需要的。

0 个答案:

没有答案
相关问题