![]() |
Text an Cursorposition auslesen (global)
Hallo zusammen,
für ein Übersetzungsprogramm möchte ich, dass bei drücken der mittleren Maustaste, der Text an der aktuellen Cursorposition ausgelesen wird. Das soll natürlich bei einem Mausklick außerhalb meines Programms funktionieren (z.B. in Word Dokument, auf einer Internetseite usw) Kann mir jemand einen Tipp geben wie ich da weiterkomme? (Ich hab bisher keinerlei Erfahrung, wie ich etwas außerhalb meines Programms machen kann) Danke |
Re: Text an Cursorposition auslesen (global)
Falls es sich um ein Wincontrol handelt, ist es einfach: Du holst dir mit WindowFromPoint das Handle und liest mit WM_GETTEXT den Text aus. Falls es allerdings kein Wincontrol ist (z.B. bei den meisten Browsern), wird es äußerst schwierig.
|
Re: Text an Cursorposition auslesen (global)
Hallo Apollonius,
danke für die schnelle Antwort. Dass es bei Browsern etc schwierig wird hatte ich mir schon gedacht. Daher war meine Idee, dass ich das mit Keybd_Event mache. Also ich gehe mit
Delphi-Quellcode:
zurück bis zum Wortanfang und mit
Keybd_Event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
Delphi-Quellcode:
markiere ich das Wort bis zu seinem Ende (halt noch mit Schleife und einer sinnvollen Abbruchbedingung, Leerzeichen oder so). Dann kann ich das Wort in die Zwischenablage kopieren und übersetzen.
Keybd_Event(VK_Shift,0,0,0);
Keybd_Event(VK_RIGHT,0,0,0); Keybd_Event(VK_Shift,0,KEYEVENTF_KEYUP,0); Keybd_Event(VK_RIGHT,0,KEYEVENTF_KEYUP,0); Nur: wie löse ich diese Prozedur aus? Das soll ja immer passieren, wenn die mittlere Maustaste gedrückt wird. |
Re: Text an Cursorposition auslesen (global)
Ich hab gerade etwas im Forum herumgesucht und schlage einen anderen Ansatz vor: Mit
![]() ![]() Such mal nach "OCR", da findet man sowas: ![]() |
Re: Text an Cursorposition auslesen (global)
Danke helgew,
das klingt interessant, ist mir aber echt zu schwierig. Ich kann gar nicht glauben, dass es nicht einfacher geht (aber vielleicht gehts ja tatsächlich nicht). Vorläufig würde mir ja schon die Möglichkeit reichen, den Cursor in irgendeinem Text zu bewegen, unabhängig davon, in welcher Anwendung sich der Text befindet (word, wordpad, pdf). Der Rest ist dann glaub ich nicht mehr so schwer... |
Re: Text an Cursorposition auslesen (global)
Wenn man den Text markieren kann, kannst du ihn auch in die Zwischenablage kopieren lassen und dann hast du ihn ja ;)
|
Re: Text an Cursorposition auslesen (global)
Stimmt, mein Problem ist nur, dass nichts markiert ist.
Der Anwender klickt in einem Text auf ein Wort. Jetzt muss mein Programm ein paar Zeichen rechts und links des Cursors markieren und dann in die Zwischenablage kopiern. Aber wie löse ich das aus? Es soll ja nicht zuerst auf einen Knopp meines Programms gedrückt werden, damit das passiert. |
Re: Text an Cursorposition auslesen (global)
Das Ablegen in die Zwischenablage obliegt dem Programm selbst, so wäre man um mögliche custrom draw Probleme herumgekommen, wie sie dir Acrobat Reader präsentieren wird ;) Da du aber offensichtlich ein eigenes Click-Event behandeln willst und nach Möglichkeit nicht nur das Fenster unter dem Cursor melken, weiß ich auch nicht weiter, wie es einfach gehen könnte
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz