2014-03-04 4 views
1

다음은 "Hello world"문자열의 키를 보내는 코드입니다. 메모장을 열어 놓았습니다. "found"문자열이 인쇄되었지만 메모장에 아무 것도 나타나지 않습니다.win32api를 사용하여 메모장에 키를 게시 할 수 없습니다.

아이디어가 있으십니까?

import win32con 
import win32api 
import win32gui 

def enumHandler(hwnd, lParam): 
    if win32gui.IsWindowVisible(hwnd): 
     if 'Notepad' in win32gui.GetWindowText(hwnd): 
      print 'found' 
      for c in "Hello World\n": 
       win32api.PostMessage(
            hwnd, 
            win32con.WM_CHAR, 
            ord(c), 
            0) 

win32gui.EnumWindows(enumHandler, None) 

답변

3

문제는 메모장 창에 메시지를 보내는 것입니다. 캡션 표시 줄이있는 최상위 창입니다. 메시지는 최상위 창 자식 인 EDIT 컨트롤에 의해 처리됩니다. 메시지를 보내면이 작업을 수행 할 수 있습니다.

그러나 실제 문제는 키보드 입력을 가짜 메모장 프로그램과 다른 것입니다. 그리고 당신의 실제 문제는 다른 방법으로 가장 잘 해결 될 것입니다. Windows는 응용 프로그램을 자동화하기 위해 UIAutomation을 제공합니다. 이것이 실제 문제에 가장 적합한 해결책 일 것입니다.

+0

네, 그렇습니다. Windows에서 UIAutomation을 위해 어떤 라이브러리를 권하고 싶습니까? 문서에 대한 링크도 감상 할 수 있습니다. – edi9999

+0

UIAutomation은 COM 라이브러리이므로 Python을 사용하여 COM을 쉽게 구동 할 수 있습니다. UIAutomation은 MSDN에 잘 설명되어 있습니다. –

+0

내 코드가 의도 한 것을 수행하는 UIAutomation 라이브러리를 사용하여 간단한 예제를 만들 수 있습니까? 그건 좋을거야 :-) – edi9999