在Python中生成鼠标键盘组合事件
我想要能够同时进行一些键盘按键和鼠标点击的组合,比如说 Control+左键点击
。
目前,我可以先按下控制键,然后再进行左键点击,使用的代码如下:
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 个回答
3
按下控制键:
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)