EnumChildWindows - Wo liegt der Fehler?
-
Salute zusammen.
Ich probiere gerade in der Konsole alle Controls auf einer Form auszugeben.
Dazu benutze ich das MainWindowHandle einer Funktion.Funktionsaufruf:
char winName[255]; strcpy(winName, "Notepad"); ControlListing(winName);
Eigentliche Funktion:
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) { byte buffer[30]; ::GetWindowText(hwnd, (LPSTR)buffer , 30); printf("hwnd_Child = %i", hwnd); printf("%s \r\n", buffer ); return TRUE; // must return TRUE; If return is FALSE it stops the recursion } void ControlListing(char WindowName[]) { HWND MainWindowHandle = FindWindow(NULL, WindowName); HWND ControlHandles[1024]; EnumChildWindows(MainWindowHandle, EnumChildProc, 0); }
Das Programm gibt mir jedoch ALLE Controls zurück, nicht nur diejenigen aus dem Programm, das ich haben will...
Wo liegt mein Fehler?
Gruss,
Peach_
-
Weil FindWindow evtl. NULL liefert?
Du suchst ein Fenster mit dem Namen Notepad.
Beim mir ist der Fenstertitel von Notepad aber Editor und enthält den Dateinamen,BTW: Mit der Funktion GetWindow kann man sich den Enum Quatsch sparen.
http://msdn.microsoft.com/en-us/library/ms633515(VS.85).aspx