Autor Beitrag
Safran
Hält's aus hier
Beiträge: 8

Win XP
Delphi 7
BeitragVerfasst: Sa 18.02.06 21:11 
Hallo Community,

ich weiß jetzt nicht ob ich im richtigen Forum poste, aber kann mir bitte jemand sagen wie ich es mit Delphi schaffe Text in einem fremden Programm dort wieder auszugeben wo ich mit dem Cursor hingeklickt habe?

Also ich möchte z.B. programmieren das ich z.B. ein klick in ein Wordfenster mache, anschließend auf der Tastatur die Nummer 1 drücke und dann ein Text erscheint.

Ich möchte jetzt nicht andere Vorschläge. Das war nur ein Beispiel. Es geht mir einfach darum das ich Text in einem nicht Programmeigenem Textfeld ausgebe..

Danke im Vorraus!


Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 18.02.2006 um 21:16
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 18.02.06 21:19 
Wenn du "einfach nur" von deinem Programm aus woanders Text reinschreiben willst, solltest du mal nach Suche in der Entwickler-Ecke WM_SETTEXT suchen. Wenn du allerdings deine Tastatureingaben in anderen Programmen durch andere Texte ersetzen willst, wirst du wohl nen Tastaturhook schreiben müssen.

_________________
We are, we were and will not be.
Safran Threadstarter
Hält's aus hier
Beiträge: 8

Win XP
Delphi 7
BeitragVerfasst: So 19.02.06 11:09 
Eins vorweg, ich bin kein Delphifreak! ;-) Also ich programmiere nicht häufig in Delphi.

Ich habe mich jetzt mal ein bischen schlau gemacht und das ganze für den Editor programmiert, da dies wohl das einfachste Programm auf meinem Rechner ist. Dabei kam folgendes raus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  wnd : HWND;
  i   : Integer;
  s   : string;
begin
  wnd := FindWindow('notepad',nil);
  if wnd <> 0 then begin
    wnd := FindWindowEx(wnd,0,'Edit',nil);
    s := 'Das ist mein Text';
    For i := 1 to Length(s) do
      SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
  end;
end;


Jetzt wollte ich mal eine Stufe höher gehen und wollte mich an einem Firefoxfenster probieren (Java).

Das Programm X-Spy liefert mir für das Editfeld folgende Daten:

ausblenden Delphi-Quelltext
1:
2:
3:
  wnd :=  FindWindow('J', nil);
  wnd :=  FindWindowEx(wnd, 0, 'SunAwtCanvas', nil);
  wnd :=  FindWindowEx(wnd, 0, 'Edit', nil);


Wenn ich die Notepadzeile durch "wnd := FindWindow('J', nil);" ersetze passiert nichts, außer das mein Prozessor ausgelastet ist, also habe ich mir gedacht das ich das Editfeld wohl direkt ansprechen muss.
Allerdings habe ich keine Ahnung wie, habe jetzt schon zwei Stunden daran rumprobiert.

Danke für eure Hilfe!

fG Safran
Safran Threadstarter
Hält's aus hier
Beiträge: 8

Win XP
Delphi 7
BeitragVerfasst: So 19.02.06 19:48 
Kann mir keiner einen Tipp geben? Ich finde auch nichts passendes dazu :-(
Safran Threadstarter
Hält's aus hier
Beiträge: 8

Win XP
Delphi 7
BeitragVerfasst: Di 21.02.06 14:46 
Weiß keiner von euch eine Antwort? Also das kann ich mir nicht vorstellen! :(

Vielleicht habe ich mich zu undeutlich ausgedrückt. Also mein Code den ich oben gepostet habe funktioniert einwandfrei. Ich habe es jetzt auch mit anderen Programmen (wie z.B ICQ) ausprobiert, allerdings habe ich ein Problem bei Webanwendungen.
Ich habe das ganze einmal mit einem JavaAplett probieren wollen und da habe ich noch eine Zeile mit der ich nichts anfangen kann dazu bekommen und zwar:

ausblenden Delphi-Quelltext
1:
wnd :=  FindWindowEx(wnd, 0, 'SunAwtCanvas', nil);					


Ich habe es schon überall hingeschrieben, aber es will einfach nicht funktionieren. Weiß keiner Rat? Es funktioniert doch auch mit anderen Programmen :(

_________________
Ich bin nicht die Signatur, ich putz hier nur...