2010-12-31 10 views
1

私はそれぞれのウィンドウのhwndを取得するために、次のenumchild procを使用しています。問題は、何とか各hwndの情報を検出できないため、私は欲しい。HWNDハンドルから読み込み可能なクラス名とタイトルを取得する方法は? WinApiでC++

たとえば、ウィンドウクラス名と、列挙型の各ウィンドウのタイトルを取得するにはどうすればよいですか?私のようなものを試してみました

..

EDITED:(それは場合に役立ちます)

TCHAR cName[MAX_PATH]; 

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) { 


TCHAR cName[MAX_PATH]; 
GetClassName(hwnd, cName, _countof(cName)); 
    cout << cName << endl; 

    return TRUE; 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 


    HWND hwnd = FindWindow(0, TEXT("reference")); 
    EnumChildWindows(hwnd, EnumChildProc, 0); 

    system("PAUSE"); 
return 0; 
} 

それはちょうど情報と、それは同じであるひとつひとつの時間を扱うhexadec返し貼り付けコピー、getClassNameメソッドfuncを変更するはずの毎回cNameを新しいハンドルに入れますか?

GetClassName関数は、cNameに書き込まれた文字数を返します。これは私にとってどのように役立ちますか?私はので、私は

ような何かを行うことができますいくつかの読みやすい形式で私のCNAMEを取得する必要がある場合は(クラス名== TEXT( "classnameiamlookingfor" & & hwndtitle = TEXT( "thetitlethatinterestsme")DOSOMETHINGWITHIT();

しかし、私はここに来るすべてがhexadec台無しです

+0

リンカオプションでデバッグシンボルを有効にしてみましたか? – too

+0

あなたのスニペットには明らかなバグがあります。それが本当であると信じるのは難しいです。エディタからコピーして貼り付け、投稿には入力しないでください。そして文字列を== –

答えて

4

それが構築UNICODE

チェックを再び以下とされていません。。?

TCHAR className[MAX_PATH]; 
GetClassName(hwnd, className, _countof(cName)); 
_tprintf(cName); 
+1

と比較しないでください。TCHAR文字列の比較に "_tcscmp(a、b)== 0"を使用してください。 – 9dan

+0

wow thanks 9dan、それは動作します_tprintf()で改行する必要がありますいくつかの比較に役立つ同じフォーマットのタイトルを取得する方法を私に教えてもらえますか? – Marko29

+0

hwndのタイトルは意味し、nvmは愚かなqのlinebreakについて:eyeroll: – Marko29

関連する問題