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_


  • Mod

    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


Log in to reply