![]() |
Dateien in der Zwischenablage auslesen
Hi!
Ich würde gerne mein Programm so aufpolieren, dass wenn der Kunde eine XML-Konfigurationsdatei in die Zwischenablage kopiert, mein Programm anbietet, diese Konfiguration zu laden. Das mit dem Ändern der Zwischenablage ist kein Problem, das auslesen der Dateien schon: Unter ![]() Wird vielleicht von Outlook gleich das komplette Attachement in die Zwischenablage gelegt, und vom Explorer nur die Dateinamen? Aber warum kann ich dann im Windows Explorer diese Datei von Outlook über [Bearbeiten] - Einfügen? Wie kann mein Programm erkennen, dass eine gültige Datei sich in der Zwischenablage befindet? Weitere Tags für diesen Beitrag: ClipBrd, ClipBoard, Zwischenablage, Datei, Kopieren, TFileName, HasFormat |
Re: Dateien in der Zwischenablage auslesen
Zitat:
Eher wirst Du zugemüllt, so wie mit diesem Post. |
Re: Dateien in der Zwischenablage auslesen
Die Tags sind ja nicht für mich, sondern für die Nachwelt. Ich selbst habe mit diesen Begriffen hier in DP und Google gesucht, aber nichts passendes gefunden. Da ich hier mein Problem nur mit "Zwischenablage" formuliert habe, wäre z.B. die Leute ausgeschlossen, die nur nach "ClipBoard" suchen.
Wenn sich wer durch die Tags zugespammt fühlt, kann ich die auch wieder rausnehmen, das soll ja kein Problem sein. |
Re: Dateien in der Zwischenablage auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Also im Clipboard stehen immer mehrere Formate gleichzeitig drin.
Das ist ganz wichtig zu wissen! Mit meinem ![]() Wenn man in Outlook einen Anhang kopiert, dann wird unter anderem auch ein Format mit dem Namen FileContents im Clipboard abgelegt. In diesem Format ist die gesamte Datei enthalten. Um an die Daten ranzukommen, muss man im eigenen Programm diese Format ebenfalls registrieren:
Delphi-Quellcode:
Dann kann man abfragen, ob dieses Format im Clipboard enthalten ist und auslesen:
var CF_FILECONTENTS : Word;
... CF_FILECONTENTS := RegisterClipboardFormat('FileContents'); // nur einmal beim Prog.start
Delphi-Quellcode:
if clipboard.HasFormat(CF_FILECONTENTS) then
// folgendes Code-Stückchen habe ich aus meiner Unit ClipboardTools rausgeschnitten with Clipboard do begin //var // size : DWORD; // handle : THandle; Open; try handle := GetAsHandle(fmt); if handle <> 0 then begin size := GlobalSize(handle); if size > 0 then begin // Daten nach Result(string) kopieren SetString(Result, PChar(GlobalLock(Handle)), size); GlobalUnlock(handle); end; end; finally Close; end; end; |
Re: Dateien in der Zwischenablage auslesen
Ah, ok. Klappt zwar anders, als ich mir das vorgestellt habe, aber es geht. Spart mir sogar noch einen Arbeitsschritt...
Delphi-Quellcode:
wird zu
try
handle := GetAsHandle(fmt);
Delphi-Quellcode:
Danke für die Antwort, hast mir sehr geholfen ;)
try
handle := GetAsHandle(CF_FILECONTENTS); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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