Hier ein Stückchen Code auf einem meiner Projekte.
Es gibt definitiv keine Probleme mit Browsern.
Lediglich bei Terminalservern und anderen "Remote-Desktop Anwendungen" funktioniert es auf diesem Wege nicht.
Delphi-Quellcode:
procedure TMain.WMHotKey(var Msg: TWMHotKey);
begin
// Warten, bis der Hotkey durch den User losgelassen wurde ...
while not ((GetASYNCKeyState(VK_LSHIFT) = 0) and
(GetASYNCKeyState(VK_RSHIFT) = 0) and
(GetASYNCKeyState(VK_LSHIFT) = 0) and
(GetASYNCKeyState(VK_RCONTROL) = 0) and
(GetASYNCKeyState(VK_RCONTROL) = 0) and
(GetASYNCKeyState(VK_LMENU) = 0) and
(GetASYNCKeyState(VK_RMENU) = 0)) do
begin
Application.ProcessMessages;
end;
// CTRL+C senden
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('C'), 0, 0, 0);
keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
// kurz warten, damit das Schreiben der Zwischenablage beendet werden kann
sleep(200);
Application.processmessages;
// Clipboard auf Text prüfen und verarbeiten
if Clipboard.HasFormat(CF_TEXT) then
s := clipboard.AsText;
...
...
end;
Schöne Grüße,
Jens
PS:
Verschlüsselte PDF Dokumente verweigern ebenfalls das Kopieren von Objekten (auch Text) in die Zwischenablage.
Wenn du was ganz Geniales bauen willst, dann vergiss CTRL+C.
Der Babylon Translator beispielsweise, liest das Wort unter dem Mauszeiger über OCR aus.
Damit kannst du dann auch Textinformationen nutzen, die als Images vorliegen.
Terminalserver u.Ä. sind dann auch kein Problem mehr.