2010-04-23 38 views
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) 

这是做什么是按键盘上的控制,然后它点击。我需要它来保持controll按下更长时间并返回,同时仍然按下继续运行代码。 有没有更低级别的说法按下键,然后在代码中告诉它举起键如鼠标在做什么?

回答

2

按下控制:

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) 
+0

按下了控制工程完美的,释放不是那么多。代码运行后,按住ctrl键直到注销或重新启动 – user202459 2010-04-24 01:15:14

+0

您是否可以验证它是否适用于您,而不仅仅是我的计算机上的问题? – user202459 2010-04-24 02:11:43

+0

看起来像扩展键事件(无论是什么)是什么引起的问题,它现在完美运行。 谢谢你的回答! – user202459 2010-04-25 11:13:23