2011-07-27 2 views
1

Windows 컴퓨터에서 python 2.7을 통해 키보드 명령을 보내려고합니다. SendKeys 모듈이 2.7에서 작동하지 않는다는 것을 이해합니다. 그래서 대신 win32 API에서 keybd_event를 사용합니다.Python이 창문에 키를 보냅니다.

나가 보내고 싶은 열쇠는 단어를 선택하기 위해 shift + left입니다. 이것은 코드입니다.

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) 

이 모든 것이 작동합니다. 그러나 시프트 키는 계속 우울하게 유지됩니다! 내가 그 과정을 죽인 후에도. 이후 shift 키를 해제하는 유일한 방법은 물리적으로 capslock을 누른 다음 shift + 키를 누른 다음 capslock을 해제하는 것입니다. 이 문제와 매우 유사합니다. http://www.bigresource.com/Tracker/Track-vb-RvVMlrAbZn/

어떻게해야할까요?

미리 감사드립니다.

+0

을합니다. 'scanCode = MapVirtualKey (VK_LSHIFT, MAPVK_VK_TO_VSC)'호출하여 keybd_event 메서드에 전달하십시오. – combatdave

+0

답장을 보내 주셔서 감사합니다. 방금 시도한 : scanCode = win32api.MapVirtualKey (win32con.VK_LSHIFT, 0) MAPVK_VK_TO_VSC 찾을 수 없기 때문에 나는 거기에 0으로 설정합니다. 그러나 여전히 불행하게도 작동하지 않습니다. – Mohamad

+0

전화를 건 후에 어떤 값이 scanCode에 있습니까? – combatdave

답변

0

Windows API의 SendInput이 도움이 될 수 있습니다. 최근 Raymond Chen 블로그 항목을 통해 스크린 세이버 시작/중지를 제어하는 ​​데 사용할 수도 있음을 알 수 있습니다.

+1

참조 용 링크가 있습니까? 감사. –

0

pywin32 패키지를 사용해 볼 수도 있습니다. 오래되어 유지 관리가되지 않습니다.

여기에 당신이 스캔 코드 (두 번째 매개 변수)로 0을 전달하기 때문에이 있다고 짐작 것 an example from StackOverflow