Senden Von text nach delphi, macht er nicht wo liegt der...
-
Luckie schrieb:
flenders schrieb:
Sofern Lucki Recht hat [...]
Ich habe Recht ;), ich habe hier Delphi und ich habe es nachgeprüft. Nur konnte ich das Parent von TEditControl nicht ermitteln.
Könntest du dein src posten, womit du die eingabe sendest ?
-
Hast du mal dir Richtigkeit des Handle mit einer anderen Funktion getestet - z.B. ShowWindow oder DestroyWindow o.ä.
-
Sheppard schrieb:
Luckie schrieb:
flenders schrieb:
Sofern Lucki Recht hat [...]
Ich habe Recht ;), ich habe hier Delphi und ich habe es nachgeprüft. Nur konnte ich das Parent von TEditControl nicht ermitteln.
Könntest du dein src posten, womit du die eingabe sendest ?
Warum Source posten, wen nich mit einem Tool die fensterklassen ausfindig gemacht habe?
Hättest du übrigens auch selber machen können.
-
flenders schrieb:
Hast du mal dir Richtigkeit des Handle mit einer anderen Funktion getestet - z.B. ShowWindow oder DestroyWindow o.ä.
Also, ich hab
int main () { HWND hWnd = FindWindow(0, "Knudda"); hWnd = FindWindowEx(hWnd, 0, "TXTabControl", NULL); hWnd = FindWindowEx(hWnd, 0, "TEditControl", NULL); ShowWindow(hWnd, SW_HIDE); SendMessage(hWnd, WM_SETTEXT, TRUE, (LPARAM)"ein text der hinzugefügt wird"); return 0; }
Versucht, geht aber nicht. Ich kann das fenster nicht verstecken weder noch text senden
-
Schau doch bitte endlich mal nach (mit Spy++ oder WinSpector) wie genau die einzelnen Childs verschachtelt sind - heißt dein Hauptfenster auch wirklich "Knudda"?
-
flenders schrieb:
Schon doch bitte endlich mal nach (mit Spy++ oder WinSpector) wie genau die einzelnen Childs verschachtelt sind - heißt dein Hauptfenster auch wirklich "Knudda"?
Ja das programm heisst Knudda, wenn ich SW_HIDE aufs fenster machen, verschwindet das, das heisst das es wohl richtig ist.
-
1.) Bekommst du von FindWindowEx gültige Handles?
2.) Was sagt GetLastError?
3.) Sind die Childs wirklich so verschachtelt, wie angenommen (mit Spy++ oder WinSpector nachprüfen)?
-
Ich hab mal den Prozess namen ausfindig gemacht: "TfrmChat"
ich probiere mal getlast error
So:HWND hWnd = FindWindow("TfrmChat" ,0); ShowErrorMsg(GetLastError()); SendMessage(hWnd, WM_SETTEXT, TRUE, (LPARAM)"Knuddel"); ShowErrorMsg(GetLastError()); hWnd = FindWindowEx(hWnd, 0, "TXTabControl", NULL); ShowErrorMsg(GetLastError()); // <--- Hier kommt Das systen kann die angegebene datei nicht finden hWnd = FindWindowEx(hWnd, 0, "TEditControl", NULL); ShowErrorMsg(GetLastError()); // <--- Hier kommt Das systen kann die angegebene datei nicht finden SendMessage(hWnd, WM_SETTEXT, TRUE, (LPARAM)"ein text der hinzugefügt wird"); ShowErrorMsg(GetLastError()); // <--- Ungültiges Fenster Handle
-
sag mal, willst du in das CodeEdit-Fenster von der Delphi IDE Text schreiben oder an ein Edit von einem mit Delphi erstellten Programm?
-
Luckie schrieb:
mit Delphi erstellten Programm?
An einem Delphi erstellten programm.
-
Hmpf. Dann sind meine genannten Fensterklassen natürlcih höchst wahrscheinlich falsch. Das sind die Fensterklassen vom Delphi Editor. Sag mal hat es dichnicht gewundert, dass ich dir Fensterklassen nennen, obwohl ich gar nicht weiß von was für einen Programm du redest?
-
Luckie schrieb:
Hmpf. Dann sind meine genannten Fensterklassen natürlcih höchst wahrscheinlich falsch. Das sind die Fensterklassen vom Delphi Editor. Sag mal hat es dichnicht gewundert, dass ich dir Fensterklassen nennen, obwohl ich gar nicht weiß von was für einen Programm du redest?
Tut mir leid, wüsstest du denn noch andere class namen `?
-
Sheppard schrieb:
Ich hab mal den Prozess namen ausfindig gemacht: "TfrmChat"
ich probiere mal getlast error
So:HWND hWnd = FindWindow("TfrmChat" ,0); ShowErrorMsg(GetLastError());
Der erste Parameter bei FindWindow ist der TITEL des Fensters.
Steht im Titel Deiner Anwendung (das ist der Dicke Rahmen oban am Fenster mit dem Maximieren-, Minimieren- und Schließen-Button ganz rechts) wirklich "TfrmChat"?
Irgendwas in mir möchte das nicht so ganz glauben...
-
Nein, der erste ist der Klassenname, zumindest nach meiner PSDK Doku.
Sheppard schrieb:
Tut mir leid, wüsstest du denn noch andere class namen `?
Ich könnte dir dutzende nennen. Aber was bringt dir das? Es sei denn du willst alle durchprobieren. Wäre es nicht sinnvoll endlich mal den Spy anzuwerfen und mal selber nachzukucken.
-
@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
-
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 einwandfreiJa, 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?