Wie komme ich an die Funktionen einer Fenster-Klasse?



  • Hi

    Ich hab mir mal folgendes Konstrukt gebastelt um mir die Titel und die Klassen aller sichtbaren Fenster anzeigen zu lassen:

    const UINT cchType=100;
    char pszType[cchType];
    char lpString[cchType];
    
    HANDLE hWnd=GetForegroundWindow();
    do
    {
     RealGetWindowClass(hWnd,pszType,cchType);
     GetWindowText(hWnd,lpString,cchType);
    
     cout << lpString << ":" << pszType << endl;
    
     hWnd=GetNextWindow(hWnd,GW_HWNDNEXT);
    }while(hWnd!=NULL);
    

    Ich weis, dass ich dafür keinen Innovationspreis bekomme aber für meine Zwecke reicht es.
    Meine Frage ist, wie ich jetzt mit den Klassen die ich gefunden habe umgehen kann.
    Ich bräuchte nämlich einen ganz bestimmten Text aus einem Fenster.
    Ich kenne die Klasse des Fensters und die des Child-Fensters in dem mein gewünschter Text steht. Die Frage ist wie ich jetzt genau an dieses Child und vorallem an dessen Funktionen rankomme um mir dadurch wiederum den Text zu holen.

    Ich hoffe ich habe mich einigermassen verständlich ausgedrückt.

    Danke schon mal.
    amd



  • Reicht nit ein "GetWindowText" ?



  • Nur um deine Frage zu verstehen:
    Du suchst ein Fenster, dessen Klassen-Namen du kennst. In diesem Fenster gibt es ein Child-Fenster, dessen Klasse du auch kennst. Und von diesem Childfenster willst du den Fenstertext? Ist es das?

    Wenn ja => Würde ich mit FindWindow das Fenster raussuchen und mit FindWindowEx das Childfenster.

    Wenn nein => Bitte Frage etwas... genauer... stellen 😉



  • GetWindowText holt mir doch bloß den Text aus der title bar.
    Ich brauche aber einen Text der in einem Edit-Feld steht.

    Das ich dazu FindWindow nehmen kann ist mir schon klar 😉
    Die Frage ist wie ich an den Text des besagten Edit-Felds rankomme.

    Um genau zu sein handelt es sich dabei um das Login-Fenster des MSN Messengers bzw. MSN Live Messengers.
    Ich will auf diesem Wege an den Benutzernamen rankommen den ich brauche um einen Registry-Wert zu ändern.



  • hm, wenn du GetWindowText auf ein EditFeld anwendest bekommst du den Text der momentan in dem drin steht.

    mfg tobZel



  • tobZel schrieb:

    hm, wenn du GetWindowText auf ein EditFeld anwendest bekommst du den Text der momentan in dem drin steht.

    mfg tobZel

    Nein, das ist falsch. Denn:

    MSDN zu GetWindowText(...) schrieb:

    This function cannot retrieve the text of an edit control in another application.

    Du musst SendMessage und WM_GETTEXT bzw WM_GETTEXTLENGTH nehmen 😉 .


Anmelden zum Antworten