2

我希望能够同时进行按键和鼠标点击的组合,例如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)

它的作用是按下键盘上的控制键,然后单击。我需要它来保持按住控件的时间更长,并在它仍然被按下时返回以继续运行代码。是否有一种可能较低级别的方式来表示按下键,然后在代码中告诉它抬起键,例如鼠标在做什么?

4

1 回答 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)
于 2010-04-24T00:03:43.480 回答