![]() |
Text an ein anderes Fenster schicken.
Hallo Leute,
gibt es eine Möglichkeit Text an eine andere Anwendung(z. Bsp Notepad) zu schicken? Ich habe bereits folgende Möglichkeiten probiert:
Delphi-Quellcode:
Das tut soweit aber leider wird bereits vorhandener Text gelöscht :(
SendMessage(Wnd, WM_Settext,0,Integer(Pchar(myString)));
dann habe ich noch
Delphi-Quellcode:
probiert. Das tut ... aber nicht in allen Anwendungen und der vorherige Inhalt der Zwischenablage wird zerstört.
edit1.SelectAll;
edit1.CopyToClipboard; PostMessage(Wnd, wm_Paste, 0,0); als letztes habe ich
Delphi-Quellcode:
probiert. Das hat in allen Anwendungen funktioniert. Aber leider kann man ja immer nur ein
PostMessage(Wnd, wm_KeyDown, ORD('A'),0);
Zeichen schicken ... :cry: Kennst ihr eine Möglichkeit Strings zu schicken oder habt evtl eine Funktion, welche einen PostMessage(Wnd, wm_KeyDown, ORD('A'),0) kapselt und der man einen String mitgeben kann? :?: Danke für die Mühe! |
Re: Text an ein anderes Fenster schicken.
Hol dir erst den Text mit
![]() ![]() |
Re: Text an ein anderes Fenster schicken.
Such einfach mal überall (in der DP, auf deiner Platte, Google, ...) nach SendKeys. Bei Delphi6 ist so eine Unit dabei, und ich glaube, dass wir dieses Thema in der DP schonmal hatten... :gruebel:
![]() |
Re: Text an ein anderes Fenster schicken.
Hi,
danke für die schnelle Antwort. Ich möchte den Text aber nicht nur anhängen. Er soll einfach da eingefügt werden, wo gerade der Cursor steht. Unabhänig, ob der Cursor in einm Edit-Feld steht, in einem langen Brief im Word, Notepad etc. bye |
Re: Text an ein anderes Fenster schicken.
SendKeys emuliert Tastendrücke, also müsste das so gehen wie du das willst.
|
Re: Text an ein anderes Fenster schicken.
Ich hab' mir mal SendKeys besorgt(SRUtils).
Hmmmm .... wohin sendet SendKeys die Daten? In der Source steht Keybd_Event(Key, 0, KEYEVENTF_KEYUP, 0); Wieso muss man kein handle angeben. Schickt Keybd_Event die Tasten an das aktive Fenster? Wie dem auch sei, es funktioniert nicht :( Jetzt hab' ich mir mal meinen eigenen SendKey gebastelt:
Delphi-Quellcode:
Es tut ... fast :mrgreen: bis auf die Tatsache, daß im Notepad nicht "Hallo Du da" ankommt, sondern
function SendKey (Handle : HWnd; Text : PChar) : Boolean;
var i : Integer; s : String; begin s := Text; for i := 0 to length(s) -1 do begin PostMessage(Handle, wm_KeyDown, Ord((Text[i])),0); end; end; h1/ d 41 :lol: Was ist den nun falsch? |
Re: Text an ein anderes Fenster schicken.
Moin glb,
auf jeden KeyDown muss auch ein KeyUp erfolgen. |
Re: Text an ein anderes Fenster schicken.
Hallo,
ich habe "meinen" SendKey nun etwas erweitert...
Delphi-Quellcode:
Ich möchte/muss PostMessage verwenden, da ich den Text an ein vorher ermitteltes Fenster schicken will.
function SendKey (Handle : HWnd; Text : PChar) : Boolean;
var i : Integer; s : String; c : Char; ret : word; flag : DWORD; hByte : Byte; vKey : Byte; begin s := Text; for i := 0 to length(s) -1 do begin c := text[i]; ret := VkKeyScan(c); hByte := HiByte(ret); vKey := LoByte(ret); if hByte = 0 then begin PostMessage(Handle, wm_Keydown, 0,0); PostMessage(Handle, wm_KeyUP , VKey ,0); end else begin PostMessage(Handle, wm_KeyDown, 0,xxx); // xxx= hier muss nun noch die Shift-Taste PostMessage(Handle, wm_KeyUP , VKey ,xxx); // "mitgedrüpckt werden.. aber wie??? end; end; mit keybd_event würde es ja so gehen:
Delphi-Quellcode:
wie bekomme ich nun die Shift-taste mit PostMessage gedrückt?
keybd_event(VK_SHIFT, 1, 0, 0);
keybd_event(VkKeyScan('L'), 1, 0, 0); keybd_event(VkKeyScan('L'), 1, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 1, KEYEVENTF_KEYUP, 0); HELP!!!! :?: :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz