EnumChildWindows
-
Hallo,
ich versuche gerade, mir die Childs von einem Fenster auflisten zu lassen. Allerdings verursacht der code, wie ich ihn momentan verwende, einen Fehler in Windows und nicht im debugger. Wär nett wenn jemand mal schaun könnte, was ich falsch gemacht habe:HANDLE ParentWnd, ChildWnd; ... ChildWnd = EnumChildWindows(ParentWnd,NULL,NULL); if(ChildWnd == NULL) { printf("Could not fild Child!\n"); system("PAUSE"); return 1; } else { printf("Found Child!\n"); }
-
Hmm... du hast Dir aber das Beispiel zu "EnumChildWindows" mal angesehen, oder?
-
Hmm, schon aber nicht so recht verstanden. Da wurde als zweites ChildWndProc übergeben, aber wozu soll ich denn diese brauchen? Ich will doch nur die Childs aufgelistet haben
-
MaxDemian schrieb:
Hmm, schon aber nicht so recht verstanden. Da wurde als zweites ChildWndProc übergeben, aber wozu soll ich denn diese brauchen? Ich will doch nur die Childs aufgelistet haben
Der Sinn ist der, dass für jedes Child die entsprechende Funktion genau einmal aufgreufen wird.
Evtl. suchst Du auch nur die Funktion GetWindow.Die folgende Schleife druchläuft auch alle Childs eines Parent Windows
for (HWND hWnd=GetWindow(hwndParent,GW_CHILD; hWnd; hWnd=GetWindow(hWnd,GW_HWNDNEXT)) { // Do something ... }
-
hmm, da kommt bei mir nur:
51 C:\sendMess\sendMess.cpp invalid conversion from `void*' to `HWND__*'
-
Und was ist hWndParent? Ein void*?
Zeige doch mal den gesamten entsprechenden Codeabschnitt!
-
hmm, ParantWnd ist eigentlich ein HANDLE:
HANDLE ParentWnd, ChildWnd; LONG scaddr; /* You get the Classname with the OllyDbg */ ParentWnd = FindWindow("#32770","Registrierungsdaten"); if(ParentWnd == NULL) { printf("did not find Parent Window!\n"); system("PAUSE"); return 1; } else { printf("Found Parent Window!\n"); } HWND hWnd=GetWindow(ParentWnd,GW_CHILD); for (hWnd; hWnd; hWnd=GetWindow(hWnd,GW_HWNDNEXT)) { cout<<hwnd<<"\n"; }
-
HANDLE ist falsch! Muss ein HWND sein!
-
argh, ich bin aber auch ... Danke ^^
Ok, ich hab jetzt mehrere Handles. Gibt es nun eine Funktion, mit der man sich den Klassennamen anzeigen lassen kann? Bzw (damit ich nich immer hier Fragen muss^^) wie kann man rausfinden, ob es so eine Funktion gibt? (sry, bin noch nich so der C++-Crack)
-
Es gibt die MSDN, die Du hoffentlich doch mit Deinem Visual Studio instaliert hast.
Die MSDN gibt es auch Online
http://msdn.microsoft.com/library/default.aspAnsonsten sind die Namen der Win32 API sehr eingänglich.
Klassenamen eines Fensters ermitteln: GetClassName
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassfunctions/getclassname.asp
-
Visual Studio??? neeeeeeeeeeeeee, Dev-C++ ^^
Danke für die quelle!