Генерация событий комбинации мышь-клавиатура в python - PullRequest
2 голосов
/ 24 апреля 2010

Я хочу, чтобы можно было сочетать нажатия клавиш и щелчки мышью одновременно, как, например, Control+LeftClick

В данный момент я могу выполнить Контроль, а затем щелкнуть левой кнопкой мыши со следующим кодом:

import win32com, win32api, win32con
def CopyBox( x, y):
    time.sleep(.2)
    wsh = win32com.client.Dispatch("WScript.Shell")
    wsh.SendKeys("^")
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)

То, что это делает, это нажимает кнопку управления на клавиатуре, затем она щелкает. Мне нужно, чтобы держать контроллер нажатым дольше и возвращаться, пока он еще нажат, чтобы продолжить выполнение кода. Есть ли более низкоуровневый способ сказать, нажмите клавишу, а затем в коде скажете, чтобы она подняла клавишу, например, что делает мышь?

1 Ответ

2 голосов
/ 24 апреля 2010

нажать на управление:

win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0)

чтобы освободить его:

win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0)

так ваш код будет выглядеть так:

import win32api, win32con
def CopyBox(x, y):
    time.sleep(.2)
    win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0)
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
    win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
...