Entwickler-Ecke
Windows API - Dateiliste in Zwischenablage einfügen
RichMan - Di 23.09.03 20:22
Titel: Dateiliste in Zwischenablage einfügen
Hi Leute!
Bin grade beim schreiben einer kleinen Funktion für ein Programm.
Ich möchte von meinem Programm aus eine Liste mit zwei Dateien/Dateinamen(?) in die Zwischenablage einfügen, sodass z.B. im Explorermenü nach einem Klick auf "Einfügen" die beiden Dateien dort entsprechend eingefügt werden.
Folgenden Ansatz habe ich bereits:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Clipboard.Open; try ClipBoard.SetAsHandle(CF_HDROP,DateienHandle); finally Clipboard.Close; end; |
In der Windows API-Hilfe steht folgendes:
| Zitat: |
The SetClipboardData [in Delphi gibbet dafür auch "SetAsHandle" in TClipboard] function places data on the clipboard in a specified clipboard format. The window must be the current clipboard owner, and the application must have called the OpenClipboard function. (When responding to the WM_RENDERFORMAT and WM_RENDERALLFORMATS messages, the clipboard owner must not call OpenClipboard before calling SetClipboardData.)
HANDLE SetClipboardData(
UINT uFormat, // clipboard format
HANDLE hMem // data handle
);
(...)
CF_HDROP: A handle of type HDROP that identifies a list of files. An application can retrieve information about the files by passing the handle to the DragQueryFile functions. |
:?: Frage: Wie bekomme ich so einen Handler mit meinen zwei Dateien nun zustande? Oder ist mein Ansatz ganz falsch?
Danke schonmal und schöne Grüße,
RichMan
Moderiert von
Tino: Quote-Tags hinzugefügt.
RichMan - Di 23.09.03 22:28
Argh, jetzt dacht ich, ich geh nochmal kurz on und überzeuge mich davon, dass so spät keiner mehr Lust auf mein Zwischenablagen-Prob hat, und dann kommst du... Jetzt muss ich das natürlich noch ausprobieren. Juhuuu, Ränder unter den Augen, ich komme... ;)
Nee Quatsch, vielen Dank! :D Scheint genau das richtige zu sein!
RichMan - Mi 24.09.03 13:00
Titel: Nochmal... Problem nicht vollständig gelöst...
Also, die Funktion arbeitet gemäß ihrer "normalen" Spezifikation einwandfrei. Sprich: ich kann die Dateien in die Zwischenablage kopieren und sie z.B. im Explorer wieder einfügen.
Nun will ich diese Dateien aber in die Datei- bzw. Brennliste von Nero (dem Brennprogramm) einfügen. Tue ich dies, wird Nero ohne weitere Meldungen sofort beendet. Ich denk mal, dass die Daten in der Zwischenablage im falschen Format vorliegen bzw. Nero dieses Format nicht akzeptiert und dann einfach beendet.
Komischerweise: Es ist kein Problem, im Explorer eine Datei zu kopieren und sie in Nero einzufügen.
Welches Format könnte ich nutzen, damit ich auch in Fremdprogrammen wie Nero den Inhalt der Zwischenablge (eben die beiden Dateien) einfügen zu können? Hat da vielleicht jemand einen Tipp für mich?
Danke schonmal!
kasi - Mi 24.09.03 14:31
PSDK schreibt
DROPFILES Structure
--------------------------------------------------------------------------------
Defines the CF_HDROP clipboard format. The data that follows is a double null-terminated list of file names.
Versuch also mal
CopyFilesToClipboard('C:\Bootlog.Txt'#0'C:\AutoExec.Bat'#0#0);
kasi
RichMan - Mi 24.09.03 15:40
Gut, ich habe deinen Funktionsaufruf mal ausprobiert, aber der selbe Effekt: Im Explorer einfügen möglich, in Nero nicht.
Tino - Do 25.09.03 09:53
Titel: Re: Nochmal... Problem nicht vollständig gelöst...
| RichMan hat folgendes geschrieben: |
| Ich denk mal, dass die Daten in der Zwischenablage im falschen Format vorliegen bzw. Nero dieses Format nicht akzeptiert und dann einfach beendet. |
Ich denke mal das hört sich mehr nach einem Bug von Nero an. Oder warum sollte sich die Anwendung sonst schließen?
Gruß
Tino
RichMan - Do 25.09.03 14:18
Hmmm, könnte auch sein. Ich installiere mal ein anderes Brennprogramm und schau, ob es damit funktioniert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!