在Python中生成鼠标键盘组合事件

2 投票
1 回答
6329 浏览
提问于 2025-04-15 21:58

我想要能够同时进行一些键盘按键和鼠标点击的组合,比如说 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)

撰写回答