2012-06-01 3 views
4

이것은 복잡한 질문이 아닙니다. iTunes에 속한 핸들을 찾는 데 문제가 있습니다. 하지만 아이튠즈가 백그라운드에서 돌아가고 있지만 윈도우를 찾을 수 없다는 말은 계속 이어지고있다. 따라서 창 이름을 입력하지 않았는지 확인했지만 spy ++는 올바른 창 이름과 클래스 이름 (아래 참조)을 사용하고 있다고 지적했습니다. 나는 그것이 작은 실수라고 확신하지만 그것을 찾을 수없는 것 같습니다. 누구도 통찰력을 가지고 있습니까? 미리 감사드립니다.FindWindow()가 내 창을 찾지 못함 [C++]

 HWND hwnd; 
     hwnd = FindWindow((LPCWSTR)"iTunes",(LPCWSTR)"iTunes"); 
    if (hwnd != 0){ 
     cout << "WINDOW FOUND" << endl; 
    } else { 
     cout << "WINDOW NOT FOUND" << endl; 
     cout << hwnd << endl; 
    } 

답변

5

FindWindow의 유니 코드 버전 인 것으로 보이는 ANSI 문자열을 사용하고 있습니다.

많은 Win32 함수는 실제로 함수와 매크로의 쌍입니다. 예를 들어, FindWindow이 같은 약 정의됩니다

HWND hwnd = FindWindow(L"iTunes", L"iTunes"); 
+0

그것은 전혀 문제 없습니다 :

HWND WINAPI FindWindowA(LPCSTR lpClassName, LPCSTR lpWindowName); HWND WINAPI FindWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName); #if (UNICODE) # define FindWindow FindWindowW #else # define FindWindow FindWindowA #endif 

가 명시 적으로 FindWindowA 전화하거나 다음과 같이 넓은 문자열을 사용하십시오. Win32를 사용할 때는 절대 캐스트 할 필요가 없습니다. 그렇다면 잘못된 매개 변수를 전달한 것일 수 있습니다. 그게 당신이 전화하고있는 FindWindow의 버전을 알게 된 것입니다. – 3Doubloons

관련 문제