![]() |
Text Kopieren mittels Shift Ende
Hallo,
ich wollte z.B. eine Text aus dem Editior mittels eines anderen Programmes kopieren. Dazu positioniere ich erst die Maus in den Editor und klicke mit links. Nun vershciebe ich den Cursor an die endsprechende Stelle. (Anfang der Zeile). Nun wolle ich ein Shift Ende senden, damit der Text markiert ist. Dises mache ich mittels.
Delphi-Quellcode:
Der Cursor geht auch ans ende der Zeile nur die Zeile ist nicht blau makiert. Ich wollte dann einfach dein CTRL C senden um den Text in die Zwischenablege zu bekommen.
Keybd_event(vk_Shift,0,0,0);
keybd_event(VK_end,0,0,0); keybd_event(vk_Shift,0,keyeventf_keyup,0); keybd_event(ck_end,keyevent_keyup,0); Wie kann ich den ein Shift End simumieren ? Was mich jedoch wurdeter ein CRTL End geht ohne Probleme :gruebel: Tanja |
Re: Text Kopieren mittels Shift Ende
Hi,
eigentlich funktioniert es doch, zumindest wird Shift + End simuliert. Wenn ich zum Testen vorher ein Seep(2000) ausführe und innerhalb der 2 Sekunden den Cursor zum Beispiel in die Mitte einer Zeile im Editor setze, wird die Zeile von der Mitte bis zum Ende bei mir markiert.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin sleep(2000); Keybd_event(vk_Shift,0,0,0); keybd_event(VK_end,0,0,0); keybd_event(vk_Shift,0, keyeventf_keyup, 0); keybd_event(vk_end,0, keyeventf_keyup, 0); end; |
Re: Text Kopieren mittels Shift Ende
Zitat:
Das es bei Dir geht wurdert mich nun. :gruebel: Tanja |
Re: Text Kopieren mittels Shift Ende
Zitat:
|
Re: Text Kopieren mittels Shift Ende
Zitat:
Tanja :twisted: |
Re: Text Kopieren mittels Shift Ende
Zitat:
Beim Windows Editor zumindest, könnte man ansonsten noch mit
Delphi-Quellcode:
die Länge und die Position des selektierten Textes auslesen oder setzen. Eventuell kannst du dich ja damit behelfen, wenn du dazwischen noch VK_END sendest.
var
SelStart, SelEnd : Integer; begin sleep(2000); //lesen SelStart:= 0; SelEnd:= 0; SendMessage(WindowFromPoint(mouse.CursorPos), EM_GETSEL, Integer(@SelStart), Integer(@SelEnd)); caption:= inttostr(SelStart)+' '+ inttostr(SelEnd); //selektieren SelStart:= 3;//Beispiel SelEnd:= 10; SendMessage(WindowFromPoint(mouse.CursorPos), EM_SETSEL, SelStart, SelEnd); EDIT: Also so in etwa:
Delphi-Quellcode:
Mit dem Sleep() ist es zwar nicht gerade das Wahre, aber zum Testen reicht es erst einmal.
procedure TForm1.Button2Click(Sender: TObject);
var SelStart, SelEnd : Integer; EdtHandle: HWND; begin sleep(2000); EdtHandle:= WindowFromPoint(mouse.CursorPos); SelStart:= 0; SelEnd:= 0; SendMessage(EdtHandle, EM_GETSEL, Integer(@SelStart), 0); keybd_event(VK_end,0,0,0); keybd_event(vk_end,0, keyeventf_keyup, 0); sleep(100); SendMessage(EdtHandle, EM_GETSEL, 0, Integer(@SelEnd)); SendMessage(EdtHandle, EM_SETSEL, SelStart, SelEnd); end; |
Re: Text Kopieren mittels Shift Ende
Man könnte natürlich auch einfach die Nachricht WM_GETTEXT benutzen. :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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