![]() |
Clipboard Viewer
Liste der Anhänge anzeigen (Anzahl: 1)
Immer wieder kommt hier die Frage auf, wie man überwachen kann, ob und wann sich der Inhalt der Zwischenablage ändert. Und da ich heute genau das brauchte, nahm ich mir die Freiheit dieses mal als Delphi-App für die Code-Library aufzubereiten.
Theorie: Das Fenster, welches sich in die Liste derere einreihen möchte, die das Clipboard beobachten, muss sich mittels ![]() ![]() Wenn das Fenster nicht mehr beobachten will bzw. (ganz wichtig), wenn das Fenster geschlossen wird, so muss ![]() Des Weiteren müssen noch 2 Windows-Botschaften abgearbeitet werden, welche nur dann aufgerufen werden, wenn wir uns auch im ersten Schritt als Beobachter angemeldet haben: ![]() ![]() Hier mal die wichtigsten Teile des Codes, das komplette Beispiel findet Ihr als Download im Anhang.
Delphi-Quellcode:
Danke an unseren Nutzer Benedikt für Hinweise zu 0 und INVALID_HANDLE_VALUE ;)
procedure TfrmClpBrdVw.WMChangeCBChain(var Msg: TWMChangeCBChain);
begin if Msg.Remove = FNextViewer then begin FNextViewer := Msg.Next; Msg.Result := 0; end else begin if (FNextViewer <> 0) and (FNextViewer <> INVALID_HANDLE_VALUE) then Msg.Result := SendMessage(FNextViewer, WM_CHANGECBCHAIN, TMessage(Msg).WParam, TMessage(Msg).LParam); end; end; procedure TfrmClpBrdVw.WMDrawClipboard(var Msg: TWMDrawClipboard); begin lblDateTime.Caption := DateTimeToStr(Now); if ClpBrd.HasFormat(CF_TEXT) then begin mmoClipbrdContents.Text := ClpBrd.AsText; end else begin mmoClipbrdContents.Text := ''; end; if (FNextViewer <> 0) and (FNextViewer <> INVALID_HANDLE_VALUE) then Msg.Result := SendMessage(FNextViewer, WM_DRAWCLIPBOARD, TMessage(Msg).WParam, TMessage(Msg).LParam); end; procedure TfrmClpBrdVw.AttachToClipboard; begin if FNextViewer = INVALID_HANDLE_VALUE then begin FNextViewer := SetClipboardViewer(Handle); if FNextViewer = 0 then if GetLastError <> 0 then ShowMessage(LastErrorMsgStr); end; end; procedure TfrmClpBrdVw.DetachFromClipboard; begin if FNextViewer <> INVALID_HANDLE_VALUE then begin ChangeClipboardChain(Handle, FNextViewer); FNextViewer := INVALID_HANDLE_VALUE; end; end; ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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-2025 by Thomas Breitkreuz