2010-04-23 37 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