2012-10-12 2 views
4

FindWindowpywin32 확장자를 사용하는 데 문제가 있습니다. 간단한 C 코드 :FindWindow 실패

int main() 
{ 
    HWND h = FindWindow(NULL, TEXT("SomeApp")); 
    if (h != INVALID_HANDLE_VALUE) 
     SetForegroundWindow(h); 
    return 0; 
} 

잘 작동합니다. 파이썬과 동일 :

import win32gui 

h = win32gui.FindWindow(None, "SomeApp") 
if h: 
    win32gui.SetForegroundWindow(h) 
else: 
    print "SomeApp not found" 

실패, SomeApp을 찾을 수 없습니다. 나는 텍스트 인코딩이 여기에 문제를 일으킬 수는 있지만 텍스트를 지정하는 방법에 대해서는 문서에서 어떤 정보도 찾을 수 없다고 제안한다.

업데이트 : 다른 컴퓨터에서 코드를 테스트했지만 아무런 문제가 없습니다. 따라서 첫 번째 시스템의 구성이 올바르지 않아야합니다. 문제가 발견되면 조사 결과를 업데이트했습니다.

+0

방금 ​​Windows Calc로 비슷한 코드를 시도했기 때문에 IDLE에서 코드를 실행합니까? IDLE에서는 작동하지 않지만 직접 명령 줄에서 python 셸에서는 작동하지 않습니다. – halex

+2

파이썬에서도'SetForegroundWindow'라고 불립니다. 첫 번째 문자는 대문자입니다 – halex

+0

그냥 setForeground 함수에 입력합니다. 내 전체 목록에서 나는 다른 성명을했습니다. 그리고 IDLE을 사용하지 않고 cmd.exe에서 스크립트를 실행합니다. 의견에 감사드립니다. – Torsten

답변

1

C 코드에서 h != INVALID_HANDLE_VALUE을 파이썬 h != None으로 확인합니다. INVALID_HANDLE_VALUE0/null/None이 아닙니다.

파이썬은 win32file 가져 오기를 통해 win32file.INVALID_HANDLE_VALUE을 정의합니다. FindWindow 합법적으로 "성공"어떤 이유로 실패 (또는 경우

gle = win32api.GetLastError() 
err = win32api.FormatMessage(gle)[:-2] 
print 'SomeApp not found: LastError=%d - %s' % (gle, err) 

이 고장에 더 많은 정보를 제공해야합니다 :

또한, 인쇄하는 대신, 당신은 같은 것을 할 수 있 느니라 "SomeApp를 찾을 수 없습니다" 그것이 효과가 있다면).

+0

동의 함, 좀 더 정확하게 보았지만 FindWindow는 __non_zero__ 메소드가있는 PyHandle 객체를 반환합니다. – Torsten

+0

나는 정말로 어디에 문제가 있었는지 모른다. 완전히 다시 설치 한 후 python (2.7)과 pywin32가 작동하여 질문이 해결되었습니다. 다른 대답이 없기 때문에 답을 수락하는 것으로 확인했습니다. – Torsten