AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Text Kopieren mittels Shift Ende
Thema durchsuchen
Ansicht
Themen-Optionen

Text Kopieren mittels Shift Ende

Ein Thema von Dumpfbacke · begonnen am 24. Jun 2007 · letzter Beitrag vom 24. Jun 2007
Antwort Antwort
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 11:58
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:
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);
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.

Wie kann ich den ein Shift End simumieren ?
Was mich jedoch wurdeter ein CRTL End geht ohne Probleme



Tanja
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 13:30
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;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 14:47
Zitat von bitsetter:
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.
Komisch bei mir im normalel Editor von Windows wird nichts blau. Ich habe auch mal eine Pause eingefügt und es geht nicht.
Das es bei Dir geht wurdert mich nun.



Tanja
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 15:10
Zitat von Dumpfbacke:
Komisch bei mir im normalel Editor von Windows wird nichts blau. Ich habe auch mal eine Pause eingefügt und es geht nicht.
Beim Editor von Windows funktioniert es bei mir auch, habe es mal eben noch an einen 2. PC getestet. Der Cursor befindet sich danach am Ende der zur Hälfte markierten Zeile.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 16:41
Zitat von bitsetter:

Beim Editor von Windows funktioniert es bei mir auch, habe es mal eben noch an einen 2. PC getestet. Der Cursor befindet sich danach am Ende der zur Hälfte markierten Zeile.
Mein Cursor geht auch ans Ende. Ist bei Dir der text von der Mitte bis zum Ende auch blau hinterlegt (makiert) ? Das ist bei mir nicht der Fall

Tanja
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 20:09
Zitat von bitsetter:
Der Cursor befindet sich danach am Ende der zur Hälfte markierten Zeile.
Ja die Hälfte des Textes ist danach blau hinterlegt.

Beim Windows Editor zumindest, könnte man ansonsten noch mit
Delphi-Quellcode:
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);
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.

EDIT: Also so in etwa:
Delphi-Quellcode:
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;
Mit dem Sleep() ist es zwar nicht gerade das Wahre, aber zum Testen reicht es erst einmal.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Text Kopieren mittels Shift Ende

  Alt 24. Jun 2007, 22:55
Man könnte natürlich auch einfach die Nachricht WM_GETTEXT benutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz