4

これは複雑な質問ではありません。iTunes に属するハンドルが見つかりません。しかし、iTunes はバックグラウンドで実行されていますが、ウィンドウが見つからないというメッセージが表示され続けます。そのため、ウィンドウ名を入力し忘れていないかどうかを確認し続けましたが、spy++ は、正しいウィンドウ名とクラス名を使用していることを指摘しました (以下を参照)。小さな間違いだと思いますが、見つけられないようです。洞察力のある人はいますか?前もって感謝します。

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

1 に答える 1

5

の Unicode バージョンと思われる ANSI 文字列を使用していますFindWindow

多くの Win32 関数は、実際には関数とマクロのペアです。たとえば、FindWindowはおおよそ次のように定義されます。

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たり使用したりしてみてください。

HWND hwnd = FindWindow(L"iTunes", L"iTunes");
于 2012-06-01T20:43:50.207 に答える