2011-07-27 72 views
1

我試圖通過發送一個Windows機器上的Python 2.7鍵盤命令發送鍵。我知道SendKeys模塊不支持2.7。所以我使用win32 API中的keybd_event代替。Windows上的Python

,我想送的關鍵是,Shift +左鍵選擇一個單詞。這是代碼:

win32api.keybd_event(win32con.VK_LSHIFT,0,win32con.KEYEVENTF_EXTENDEDKEY | 0,0) 
win32api.keybd_event(win32con.VK_LEFT,0,0,0) 
win32api.keybd_event(win32con.VK_LSHIFT,0,win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP,0) 

這一切工作。但是,換檔鍵保持壓低狀態!即使我殺了這個過程。之後釋放換檔鍵的唯一方法是按下大寫鎖,然後按+鍵,然後關閉大寫鎖。它非常相似,這一問題:http://www.bigresource.com/Tracker/Track-vb-RvVMlrAbZn/

你有任何想法,該怎麼辦?

在此先感謝!

+0

我大膽猜測,這是因爲你在0傳遞作爲掃描碼(第二個參數)。嘗試調用'掃描碼= MapVirtualKey(VK_LSHIFT,MAPVK_VK_TO_VSC)'和順便指出到keybd_event方法。 – combatdave

+0

感謝您的回覆。我只是試着用: scanCode = win32api.MapVirtualKey(win32con.VK_LSHIFT,0) 我在那裏設置了一個零,因爲我找不到MAPVK_VK_TO_VSC。 但是,它仍然無法工作。 – Mohamad

+0

在您撥打電話後,scanCode中有什麼值? – combatdave

回答

0

SendInput可能會有所幫助。最近Raymond Chen的博客文章建議你甚至可以用它來控制屏幕保護程序的啓動/停止。

+1

你有任何鏈接供你參考?謝謝。 –