Edit aus fremden programm loggen



  • mit diesem code logge ich ein Edit aus einem fremden Programm.

    HWND hwndNotepad = FindWindow(NULL,"Form1");
       if (hwndNotepad == NULL)
       {
          ListBox1->Items->Add("Error - Fenster");
          return;
       }
    
        HWND hwndEdit = FindWindowEx(hwndNotepad, NULL, "TEdit", NULL);
        if (hwndEdit == NULL)
        {
          ListBox1->Items->Add("Error - Window Ex");
          return;
        }
        int nLen = SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0);
        char *pText = new char[nLen+1];
        SendMessage(hwndEdit, WM_GETTEXT, (WPARAM)(nLen+1), (LPARAM)pText);
    
        Edit1->Text = AnsiString(pText);
    
        delete[] pText;
    

    wenn auf dem Programm mehrere Edits sind, kann ich so ja nur immer das erste auslesen.
    gibts ne funktion die die auswahl von den verschiedenen edits erlaubt?
    oder noch besser gibts etwas ähnliches wie beim bcb im stil von

    Application->Components[0]->...
    

    schonmal thx für hilfe



  • Nochmal FindWindowEx() aufrufen und dessen 2. Parameter dann setzen ?



  • thx stimmt, hat geklappt 🙂

    ich arbeite mich da schleppend in dieses thema ein..
    kennt jemand ein gutes tutorial darüber?
    habe leider nichts schlaues gefunden und weiss auch nicht genau nach welchen stichwörtenr ich suchen soll 😞



  • Hallo zusammen

    Zu diesem Thema hätte ich auch noch eine Frage:
    Ich habe auch eine fremde Anwendung, und möchte dort einen Text auslesen. Dies ist jedoch leider kein Editfeld.
    Mit dem obigen Code hab ich es schon versucht jedoch es hat nicht funktioniert.
    Was ich nun festgestellt habe, ist das wenn das fremde Programm einen neuen Text in das Feld schreibt nur die Message WM_PAINT ausgelöst wird.
    Gibt es hier überhaupt eine Möglichkeit den Text auszulesen?

    Vielen Dank im vorraus.

    MfG Stephan


Anmelden zum Antworten