Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mausklick + Ctrl und dann Text auslesen (https://www.delphipraxis.net/37367-mausklick-ctrl-und-dann-text-auslesen.html)

yvesdaeschle 5. Jan 2005 01:21


Mausklick + Ctrl und dann Text auslesen
 
Hallo Zusammen,

ich hoffe ihr könnt mir helfen. Sicherlich kennen einige von Euch den Babylon Translator. Dort kann man mit Hilfe von z.B. Rechter Maustaste + Ctrl die Übersetzung von dem Wort auf das man Klickt in einem belibigen Fenster übersetzen lassen. -> Es wird Babylon mit dem Wort aufgerufen.

So etwas möchte ich für eine Anwengung haben, welches ich schreibe. Also wenn z.B. die Rechte Maustaste + Ctrl auf ein Wort soll mein Programm das Wort bekommen auf dem diese Aktion ausgeführt wurde.

Leider habe ich in dieser Richtung noch nie etwas gemacht, könnt ihr mir da helfen? Muss ich das mit Hooks machen... wenn ja wie bekomme ich dann überhaupt den Text auf den geklickt wurde? Und muss ich den Hotkey registrieren?

Vielleicht hat auch schon jemand ein Beispiel? :coder2:
Oder weis jemand wo ich eine Anleitung dafür finde?

Vielen Dank schon mal, Yves

PS: Hab rausgefunden dass Babylon es mit OCR macht... das möchte ich nicht verwenden. Das muss sicher auch anders gehen!

gmarts 5. Jan 2005 02:21

Re: Mausklick + Ctrl und dann Text auslesen
 
Zitat:

Zitat von yvesdaeschle
So etwas möchte ich für eine Anwengung haben, welches ich schreibe. Also wenn z.B. die Rechte Maustaste + Ctrl auf ein Wort soll mein Programm das Wort bekommen auf dem diese Aktion ausgeführt wurde.

So würde ich es in einer eigenen DelphiAnwendung machen:
Wenns die linke Maustaste sein darf, dann setzt die den Cursor auf dein Wort und über die CaretPos-Eigenschaft von z.B. TMemo & TRichedit, findest du raus bei welchem Wort der Cursor sitzt.
Wenns die rechte Maustaste sein soll, dann folgendes:
Delphi-Quellcode:
procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if mouse.Button = mbRight then
    begin
        mouse_event(MOUSEEVENTF_LEFTDOWN, mouse.CursorPos.x, mouse.CursorPos.y, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, mouse.CursorPos.x, mouse.CursorPos.y, 0, 0);
    end;
end;
...und schon ist es wieder die linke, die dann das OnClick-Ereignis auslöst! :stupid:





Zitat:

Zitat von yvesdaeschle
PS: Hab rausgefunden dass Babylon es mit OCR macht... das möchte ich nicht verwenden. Das muss sicher auch anders gehen!

Wenn du es über deine Anwendung hinaus brauchst, wirst du es wahrscheinlich auch so machen müssen.
Hier ein ähnliches Problem: Textfeld eines externen Programms ansprechen?

MfG GM

yvesdaeschle 5. Jan 2005 02:28

Re: Mausklick + Ctrl und dann Text auslesen
 
Hallo,

habe während dessen auch noch in mehreren Foren gesucht. Und zwei Möglichkeiten gefunden.

1. Senden von Strg+C (was nicht empfohlen wird)
2. WM_GETTEXT welches beim InternetExploer und Word nicht klappt

Bekommt man mit WM_GETTEXT den ganzen Text oder nur welcher selektiert ist?
Wenn ja, gibt es auch eine Möglichkeit auser Str+C für alle Programme?

Noch zu Info... es geht eigentlich nur über mein Programm heraus. Mein Programm verarbeitet den String nur.

Und wenn es nur über Strg+C klappen sollte, gibt es dann eine Möglichkeit den ganzen Inhalt der Zwischenablage, egal welches Typs zu sichern und hinterher wieder hineinzuschreiben?

Ich denk, die Aufgabe ist echt nicht leicht... habe bis jetzt noch nicht eine überzeugende Lösung gefunden!

Danke, Yves

supermuckl 5. Jan 2005 02:59

Re: Mausklick + Ctrl und dann Text auslesen
 
Zitat:

PS: Hab rausgefunden dass Babylon es mit OCR macht... das möchte ich nicht verwenden. Das muss sicher auch anders gehen!
stimmt, babylon nutzt OCR
aber es geht bei bildern nunmal nicht anderst ;)

und eventuell bei sehr vielen unterschiedlichen anwendungen, die den text nicht als standard label haben, den man auslesen könnte, sonder neine eigene zeichen procedur haben, die du nicht kennst und nicht anzapfen/auslesen kannst

Luckie 5. Jan 2005 04:12

Re: Mausklick + Ctrl und dann Text auslesen
 
Du wirst schon bei einer TLabel Komponente von Delphi selbst scheitern, da diese kein Handle hat, denn sie ist nicht von TWinControl abgeleitet.

Und wenn es wirklcih was bringen soll, dann wirst du um OCR nicht drumrumkommen.

yvesdaeschle 5. Jan 2005 09:43

Re: Mausklick + Ctrl und dann Text auslesen
 
Hi,

danke schon mal für die Antworten. Ich habe gesehen, dass es bei Torry eine OCR Komponente gibt. Lässt sich dann sowas mit dieser Komponente realisieren?

Und dann steckt ja einiges an Programmierung dahinter, damit man auch wirklich den Text unter dem Cursor bekommt!

Hat sowas noch niemand gemacht?

Danke, Yves

yvesdaeschle 5. Jan 2005 10:24

Re: Mausklick + Ctrl und dann Text auslesen
 
Hi Zusammen,

ich hab schon mal weiter geschaut und hab gemerkt, dass sich der Aufwand nicht lohnt OCR zu benutzen.
Also versuche ich mal die Variante mit Ctrl+C.

Leider hab ich da gleich ein Problem. Bei Notepad, Word, Excel klappt es, aber bei I-Explorer und Firefox macht er nichts.

Code:
  Memo1.Lines.Clear;
  Clipboard.Clear;
  GetCursorPos(rPos);
  hWnd := WindowFromPoint(rPos);
  SendMessage(hwnd, WM_COPY, 0, 0);
  Memo1.PasteFromClipboard;
Eigentlich müsste das doch überall klappen, warum macht er das ausgerechnet bei den Browsern nicht?

Danke, Yves

Shaman 5. Jan 2005 10:41

Re: Mausklick + Ctrl und dann Text auslesen
 
Hoi

Schick besser die Tastenkombination, das raffen alle Edits, auch die ohne Handle.

Gruss
Shaman

supermuckl 5. Jan 2005 10:43

Re: Mausklick + Ctrl und dann Text auslesen
 
wie kommst du daraf das sich der einsatz von OCR nicht lohnt ?
nur weil du nicht weist, wie man die Komponente einsetzt ? oder wie ?

ausserdem:
Zitat:

Du wirst schon bei einer TLabel Komponente von Delphi selbst scheitern, da diese kein Handle hat, denn sie ist nicht von TWinControl abgeleitet.
das ist genau das was du da hast. dein problem

yvesdaeschle 5. Jan 2005 13:08

Re: Mausklick + Ctrl und dann Text auslesen
 
Hallo supermuckl,

ja ich weis nicht wie ich das OCR einsetzen soll, hab auch noch gar keine Komponente gefunden. Und wenn kosten die alle Geld.

Mein Programm sollte eigentlich auch nur den Text von Browser, TextEditoren und OfficeProdukten erkennen, und da dürfte es mit Ctrl+C klappen.

Und wenn ich OCR verwenden sollte, wo gibt es was kostenlos? Und muss ichmich dabei gleichzeitig mit Neuronalen Netzen beschäftigen... Da ist mir der Aufwand zu groß!

Da gibt es wohl keine andere Lösung!

Gruß, Yves


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr.
Seite 1 von 2  1 2      

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