AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Zugriff auf die Clipboard Historie von Windows 10
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf die Clipboard Historie von Windows 10

Ein Thema von amigage · begonnen am 6. Jan 2021 · letzter Beitrag vom 8. Jan 2021
 
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#10

AW: Zugriff auf die Clipboard Historie von Windows 10

  Alt 8. Jan 2021, 10:03
Ich habe die Lösung gefunden, wie man die Daten zumindest nicht in der Windows Zwischenablage sieht!

Unter https://docs.microsoft.com/en-us/win...istory-formats findet sich der Hinweis, dass man das ClipBoardFormat "ExcludeClipboardContentFromMonitorProcessing" anmelden muss, um nachfolgende Inhalte vor der "sichtbaren" Zwischenablage zu schützen.


Nachfolgender Code versteckt den Inhalt meiner Zwischenablage, lässt den Text aber über Strg+V und "Einfügen" in alle Texteditoren und Eingabefeldern einfügen!
Delphi-Quellcode:
procedure SetDataCB(myCF: Word; pBData: TBytes);
var
  MemHandle: THandle;
  MemPtr : Pointer;
begin
  begin
    MemHandle := GlobalAlloc(GHND, Length(pBData));
    if MemHandle <> 0 then
    begin
      MemPtr := GlobalLock(MemHandle);
      try
        Move(pBData, MemPtr, High(TBytes));
      finally
        GlobalUnlock(MemHandle);
      end;
    end
    else
      MessageDlg('Global Alloc failed!', mtError, [mbOK], 0);
  end;

  // Now we call SetAsHandle to write it to the clipboard.
  Clipboard.SetAsHandle(myCF, MemHandle);
end;
Delphi-Quellcode:
var
  bFalse, bTrue : TBytes;
  cf : Word;
const
  cfnNoMonitorProc = 'ExcludeClipboardContentFromMonitorProcessing';
// cfnHistory = 'CanIncludeInClipboardHistory';
// cfnCloud = 'CanUploadToCloudClipboard';
begin
  ClipBoard.Open;

  bFalse := TBytes.Create(0, 0, 0, 0);
  bTrue := TBytes.Create(1, 0, 0, 0);

  cf := RegisterClipboardFormat(CfnNoMonitorProc);
  if(cf = 0) then
    ShowMessage('Unable to register ' + CfnNoMonitorProc +'!')
  else
    SetDataCB(cf, bTrue);

// cf := RegisterClipboardFormat(CfnCloud);
// if(cf = 0) then
// ShowMessage('Unable to register ' + CfnHistory +'!')
// else
// SetDataCB(cf, bFalse);
//
// cf := RegisterClipboardFormat(CfnHistory);
// if(cf = 0) then
// ShowMessage('Unable to register ' + CfnCloud +'!')
// else
// SetDataCB(cf, bFalse);

  Clipboard.AsText := 'Mein Text in der Zwischenablage';
  ClipBoard.Close;
end;
Mit der Anmeldung der anderen ClipBoardFormate CanIncludeInClipboardHistory und CanUploadToCloudClipboard und der Übergabe des false Wertes, lässt sich auch die Übertragung der Daten in die Cloud verhindern.

Nachteil: andere Clipboard Viewer, wie z.B. der von GExperts liest die Daten weiterhin aus. Aber mir reicht es grundsätzlich erst einmal so.

Ich danke euch für die Denkanstöße!

Geändert von amigage ( 8. Jan 2021 um 10:07 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 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