GetClassName - Was mache ich falsch?
-
Sooo hi erstmal...
Da ich z.Z. ein Programm schreibe wobei sich öfters mal PopUps öffnen brauche ich nun eure Hilfe...
Es wird durch den PopUp immer der Internet Explorer gestartet... Immer mit anderem Titel...
Jetzt wollte ich mit GetClassName an den Klassennamen kommen was aber nicht ganz klappt... Deshalb frag ich euch mal wie ich folgenden Code zum laufen bringe...
TCHAR output[255]; memset(output, 0, sizeof(output)); HWND hWnd = FindWindow(0, TEXT("Google - Microsoft Internet Explorer")); // Der Titel ändert sich immer deshalb brauch ich den ClassName... //(der steht immer an erster Stelle) cout << "HWND " << hWnd << endl; // handle ausgeben if(hWnd){ // wenn gefunden GetClassName(hWnd,output,sizeof(output)); cout << "OUT " << output << endl; }
So jetzt sollte ich bei out denke ich IEFrame stehen haben so ist glaube ich der Klassenname vom IE.... Da mich aber die Funktion interessiert und ich sie vlt in der Zukunft nochmal gebrauchen könnte Frage ich hier...
Der Output wäre folgendes:
HWND 00120910
OUT 0012FD2CWie ihr seht bekomme ich "0012FD2C" raus... Nur mit denen kann ich doch nichts anfangen.... Als Klassennamen kann man es nicht benutzen ;).
Danke schonmal
-
Compilierst du als Unicode?
Wenn ja müsste es wcout und sizeof(output) / sizeof(TCHAR) heißen
-
Du solltest wcout verwenden, wenn Du ein UNICODE-Programm hast...
-
Vielen Dank Leute ! Das war die Lösung :)).
Ausgabe... IEFrame :)))
-
Ok ich bins natürlich gleich nochmal wollte keinen extra Thread öffnen...
Und zwar bekomm ich durch den Klassennamen jetzt das Handle aber jetzt streikt SendMessage!
HWND hWnd = FindWindow(TEXT("IEFrame"), 0); wcout << "HWND " << hWnd << endl; SendMessage(hWnd, WM_CLOSE, NULL,NULL);
Ganz komischer Tag heute nichts geht
-
So ich sollte nicht so voreilig sein....
Mit PostMessage gehts :).
Keine Ahnung warum nicht mit SendMessage aber egal