Handel eines Textfeldes



  • Wie kann man das Handle eines beliebigen Textfeldes von anderen Programmen wie, z.B Notepad, C++ Builder, Word, etc. bekommen wenn man das Handel des Festers schon hat.

    Ich habs hermit probiert:

    HWND hEdit;
    
    hEdit = FindWindowEx(hWin, 0, "Memo", NULL);
    if(hEdit == NULL)
        hEdit = FindWindowEx(hWin, 0, "Richtext", NULL);
    if(hEdit == NULL)
        hEdit = FindWindowEx(hWin, 0, "Edit", NULL);
    

    jedoch erfolglos. Kann mir da jemand weiterhelfen?



  • Entweder mit EnumChildWindows (excellente Variante) oder mit GetWindow mit GW_CHILD als 2. Parameter (nicht so tolle Variante)



  • ne, mit FindWindow ist es schon ok



  • Word z.B. verwendet kein "normales" Textfeld, auch eine Feherquelle: das Textfeld muss nicht zwangsläufig ein direktes Child des Hauptfensters (das Handle ist richtig?!) sein 🙄



  • Erstmal danke für eure Antworten.
    Klappt aber noch nicht.
    hWin ist ein Handle auf ein geöffneten Notepad mit FindWindow ermittelt.
    Das Textfeld wird aber mit EnumChildWindows nicht gefunden. Die CallBack Fuktion wir nicht ausgeführt.

    BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
    {}
    ...
    EnumChildWindows(hWin, (WNDENUMPROC)EnumChildProc, 12)
    

    und

    SendMessage(hWin, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)"Blaa Blaa");
    

    schreibt den Text im Titel von Notepad aber nicht im Textfeld.
    Wie kann ich also Handle vom Textfeld bekommen???



  • eigentlich sollte das mit FindWindowEx(hWin, 0, "Edit", NULL); aber schon klappen 🙄
    Bist du dir sicher, dass das EDIT nicht gefunden wird? Evtl. ist auch einfach nur WM_SETTEXT nicht das richtige 🙄



  • Es hat geklappt 🙂
    Ich weiss zwar nicht warum auch nicht schon vorher.
    Aber Egal.
    Danke euch 👍


Anmelden zum Antworten