Senden Von text nach delphi, macht er nicht wo liegt der...



  • Luckie schrieb:

    Nein, der erste ist der Klassenname, zumindest nach meiner PSDK Doku. 😉

    Ach shit, ja, hast natürlich Recht!

    Ich bin beim quoten durch das FindWindowEx durcheinandergekommen... 🤡



  • flenders schrieb:

    @Sheppard: Es wird wirklich höchste Zeit, dass du mal das, was du als Antworten bekommst auch auszuprobieren.
    Also schau endlich mit Spy++ bzw. Winspector nach, wie deinen Fenster verschachtelt sind.

    @Luckie: Dann hatte ich mit meiner Infragestellung der Fensterklassen-Namen also doch recht :p 😉

    Ich habe es schon mit Spy++ Auseinander genommen, und da heisst das input "Edit"

    EDIT:

    So, ich hab mich nun mal ganz befasst, hier mal der src:

    HWND hWnd = FindWindow("TfrmChat", 0); // GEht
    ShowErrorMsg(GetLastError()); 
    //hWnd = FindWindowEx(hWnd, 0, "TXTabControl", NULL); // Findet er nicht
    //ShowErrorMsg(GetLastError()); 
    hWnd = FindWindowEx(hWnd, 0, "Edit", NULL); // Geht
    ShowErrorMsg(GetLastError()); 
    SendMessage(hWnd, EM_REPLACESEL, 0, (LPARAM)"ein text der hinzugefügt wird"); // ungültiges fenster handle
    ShowErrorMsg(GetLastError());
    

    Nun weiss ich nicht, wie ich das mit SendMessage machen soll.
    Kann mir jemand tip geben ?



  • Bist du dir absolut sicher, dass du von deinem FindWindowEx Aufruf ein gültiges (und das richtige - evtl. gibt es ja auch mehrere EDIT-Childs, das würdest du dann in Spy++ sehen) Handle bekommst?
    Ich habe den Code nämlich mal mit Notepad getestet (also TfrmChat durch Notepad ersetzt) und da funktioniert er einwandfrei 😉



  • flenders schrieb:

    Bist du dir absolut sicher, dass du von deinem FindWindowEx Aufruf ein gültiges (und das richtige - evtl. gibt es ja auch mehrere EDIT-Childs, das würdest du dann in Spy++ sehen) Handle bekommst?
    Ich habe den Code nämlich mal mit Notepad getestet (also TfrmChat durch Notepad ersetzt) und da funktioniert er einwandfrei 😉

    Ja, Spy++ zeigt mir das fenster wo man was reinschreibt als Edit an.

    Class: Edit

    Da kann doch nix falsch sein oder ?



  • Ist dieses Edit auch ein direktes Child des Haupt-Fensters?
    hWnd sollte auf jeden Fall != NULL sein - ansonsten: Was liefert dein GetLastError?



  • flenders schrieb:

    Ist dieses Edit auch ein direktes Child des Haupt-Fensters?
    hWnd sollte auf jeden Fall != NULL sein - ansonsten: Was liefert dein GetLastError?

    hWnd = FindWindowEx(hWnd, 0, "Edit", NULL); // Geht

    Da kommt das es geht.

    EDIT: Könnte es auch am SendMessage liegen ?



  • Wie gesagt, bei mir klappt es so mit dem EDIT des Notepad - evtl. versuchst du es zum Test damit einmal 😉



  • flenders schrieb:

    Wie gesagt, bei mir klappt es so mit dem EDIT des Notepad - evtl. versuchst du es zum Test damit einmal 😉

    Notepad geht damit.

    Nur bei: SendMessage(hWnd, EM_REPLACESEL, 0, (LPARAM)"ein text der hinzugefügt wird");

    Kommt ungültiges fenster handle könntest du mir das erklären ?



  • Das mit den ungültigen Fester-Handle sagst du jetzt aber auch zum ersten Mal!
    Also mit dem Notepad klappt das ganze bei dir jetzt auch?! Kann es sein, dass du den gepostetet Quelltext falsch eingebaut hast (poste mal bissl Code außenrum) 😕



  • flenders schrieb:

    Das mit den ungültigen Fester-Handle sagst du jetzt aber auch zum ersten Mal!
    Also mit dem Notepad klappt das ganze bei dir jetzt auch?! Kann es sein, dass du den gepostetet Quelltext falsch eingebaut hast (poste mal bissl Code außenrum) 😕

    Gesamter code, aber ich hab die getlasterror sachen bei den commands als kommentar geschrieben.

    #include <stdio.h> // standard-io
    #include <windows.h>    // windows-sdk für SendMessage() und FindWindows()
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    
    INT WINAPI ShowErrorMsg(DWORD dwLastError) 
    { 
       UINT iResult; 
       LPVOID szLastError; 
    
       FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwLastError, 0, (LPTSTR)&szLastError, 0, NULL); 
       iResult = MessageBox(NULL, (char*)szLastError, "Error:", MB_OK | MB_ICONWARNING); 
    
       return iResult; 
    } 
    
    int main () {
    HWND hWnd = NULL;
    HWND hWnd2 = NULL;
    	hWnd = FindWindow("TfrmChat", 0); // GEht
    ShowErrorMsg(GetLastError()); 
    //hWnd = FindWindowEx(hWnd, 0, "TXTabControl", NULL); // Findet er nicht
    //ShowErrorMsg(GetLastError()); 
    hWnd2 = FindWindowEx(hWnd, 0, "Edit", NULL); // Geht
    ShowErrorMsg(GetLastError()); 
    SendMessage(hWnd2, EM_REPLACESEL, 0, (LPARAM)"ein text der hinzugefügt wird"); // ungültiges fenster handle
    ShowErrorMsg(GetLastError());
    	return 0; 
    
    }
    


  • Wenn der FindWindowEx-Aufruf erfolgreich ist kann nicht direkt dahinter plötzlich das Fenster-Handle ungültig sein! Hast du hWnd2 mal direkt auf != NULL gecheckt, oder warum bist du dir so sicher, dass der Aufruf erfolgreich war? Und sag mal genau, welches GetLastError was liefert.



  • flenders schrieb:

    Wenn der FindWindowEx-Aufruf erfolgreich ist kann nicht direkt dahinter plötzlich das Fenster-Handle ungültig sein! Hast du hWnd2 mal direkt auf != NULL gecheckt, oder warum bist du dir so sicher, dass der Aufruf erfolgreich war? Und sag mal genau, welches GetLastError was liefert.

    hWnd = FindWindow("TfrmChat", 0); // GEht
    ShowErrorMsg(GetLastError()); 
    //hWnd = FindWindowEx(hWnd, 0, "TXTabControl", NULL); // Findet er nicht
    //ShowErrorMsg(GetLastError()); 
    hWnd2 = FindWindowEx(hWnd, 0, "Edit", NULL); // Geht
    

    das // Geht steht dafür, das GetLastError zurück gegeben hat das es funktioniert.



  • Hatte das mit dem Verstecken des Edits denn geklappt? und warum schreibst du den jeweiligen Kommetar nich direkt hinter das zugehörige GetLastError?



  • Und was ist das überhaupt für eine Anwendung, auf deren Edit du zugreifen willst? Falls sie klein ist kannst du sie mir evtl. mal schicken?!



  • gerne, sag mir bitte deine email adresse 🙂







  • Ich hab mir das jetzt nicht so genau angeschaut - könntest du evtl. mal einen Screenshot von der aufgeklappten Fensterliste des Programms von Spy++ machen 🙄





  • Error 404 😕


Anmelden zum Antworten