Entwickler-Ecke

Windows API - Markierten Text kopieren -> fremdes Programm


Eagle-Data - Mi 11.08.04 09:05
Titel: Markierten Text kopieren -> fremdes Programm
Hi,

wie der Titel schon sagt, hat einer ne Ahnung wie ich den markierten Text in einem beliebigem Programm ermitteln kann? Ich (mit Hilfe) hab es hinbekommen in jedes Kontextmenü einen eigenen Eintrag hinzuzufügen. Wenn ich den Menüpunkt aufrufe, brauch in den aktuell markierten Text.

Kann mir da einer Helfen.

PS: Kennt ihr Babylon? Die haben das hinbekommen.

Thx


inselberg - Mi 11.08.04 09:20

babylon macht das mit (afaik) ocr


BadDog - Mi 11.08.04 09:57

Vielleicht etwas in der Art:


Quelltext
1:
2:
3:
4:
5:
6:
function getSelectedText(handle : HWND) : String;
begin
  Clipboard.Clear;
  SendMessage(handle, WM_COPY, 0, 0);
  result := Clipboard.asText;
end;


Eagle-Data - Mi 11.08.04 10:50

Clipboard kennt er nich ...


BadDog - Mi 11.08.04 11:05

Du mußt die Unit ClipBrd einbinden, da ist das Clipboard Objekt drin!


Eagle-Data - Mi 11.08.04 11:21

Stimmt, danke.

So richtig geht aber immer noch nicht:

Ich hab einen Timer, der beim Minimieren des Fensters (OnHide) gestartet wird. Das Fenster geht dann in den Systray. Der Timer ermittelt immer mit GetForeGroundWindow das aktuelle Fenster und speichert es. Wenn ich auf das Icon klicke, wird der Timer gestoppt und das Fenster wieder angezeigt. Ich hab die Ausgabe von GetForeGroundWindow mal in ner Listbox ausgeben. Sind aber nur Nummern. Und mit GetSelectedText kommt auch nix an.

Gibts noch ne andere Möglichkeit das letzte aktive Fenster zu ermitteln?

Thx


Delete - Mi 11.08.04 13:22

Das was du da als nur Nummern bezeichnest, sind die Handles von den Fenstern. Und ein Handle ist eine eindeutige Kennung für das Fenster. Du hast also was du willst. Oder was hast du erwartet soll Suche im MSDN GETFOREGROUNDWINDOW zurückliefern?


Eagle-Data - Mi 11.08.04 13:26

naja zu testzwecken wäre mal der name des fenster nich schlecht. also das was in der titelleiste steht


Viper - Mi 11.08.04 14:30

Hallo.

Schau dir das mal an, da steht wie es geht!
http://www.delphi-forum.de/viewtopic.php?t=28237