2010-12-31 2 views
1

Ich benutze die folgenden enumchild proc, um hwnd jedes Fensters zu bekommen, das Problem ist, dass ich nicht irgendwie Informationen von jedem hwnd erkennen kann, damit ich tun kann, was ich will mit denen, die als diejenigen erkannt werden Ich brauche.Wie erhält man lesbaren Klassennamen und Titel von HWND Handle? in WinApi C++

Zum Beispiel, wie könnte ich Window-Klassenname und den Titel jedes Fensters in der Enum-Balg bekommen?

Ich habe versucht, so etwas wie ..

EDITED: Kopie eingefügt (wenn das hilft)

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; 
} 

Es gibt nur die Info hexadez handhaben und jedes Mal es gleich ist, shouldnt die GetClassName func Änderung der cName in jedes neue Handle?

Auch GetClassName Funktion gibt die Anzahl der Zeichen in cName, ich sehe nicht wirklich, wie das für mich nützlich ist? Ich brauche meine cName in einigen lesbaren Format zu bekommen, damit ich so etwas wie

if (classname == TEXT ("classnameiamlookingfor" & & hwndtitle tun = TEXT ("thetitlethatinterestsme") DOSOMETHINGWITHIT();

aber alles, was ich hier ist hexadez Chaos

+0

Haben Sie versucht, Debug-Symbole in Linker-Optionen zu aktivieren? – too

+0

Es gibt einen ziemlich offensichtlichen Fehler in Ihrem Snippet. Kaum zu glauben, dass es echt ist. Kopieren und Einfügen von Ihrem Editor, geben Sie es nicht in den Post ein. Und vergleichen Sie keine Zeichenfolgen mit == –

Antwort

4

ist es nicht Unicode-bauen

überprüfen wieder mit unter:.?

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

Für TCHAR-Zeichenfolge vergleichen verwenden Sie "_tcscmp (a, b) == 0" – 9dan

+0

wow danke 9dan, es funktioniert, ich brauche nur eine Möglichkeit, einen Zeilenumbruch mit _tprintf() und wenn Sie würden Sei so nett, mir zu sagen, wie man einen Titel im selben Format bekommt, das für einen Vergleich nützlich ist? – Marko29

+0

der Titel von hwnd ich meine, und nvm dumm q über linebreak: eyeroll: – Marko29

Verwandte Themen