Hallo zusammen,
ich möchte gern eine Datei (Test.xlsx) in die Zwischenablage kopieren und anschließend mittels Strg+V oder über das Menü rechte Maustaste/Einfügen in ein beliebiges Verzeichnis oder Mailanhang kopieren.
Dazu habe ich auch schon einige Beispiele gefunden die letztendlich immer den selben Code verwenden
Code:
// Aufruf mit CopyFilesToClipboard('C:\Bootlog.Txt'#0'C:\AutoExec.Bat'); Files durch #0 trennen
procedure TForm_Schleifbrand.CopyFilesToClipboard(FileList: string);
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
iLen := Length(FileList) + 2;
FileList := FileList + #0#0;
hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(TDropFiles) + iLen);
if (hGlobal = 0) then raise
Exception.Create('Nicht genügend Speicher vorhanden');
begin
DropFiles := GlobalLock(hGlobal);
DropFiles^.pFiles := SizeOf(TDropFiles);
Move(FileList[1], (PAnsiChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
GlobalUnlock(hGlobal);
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
end;
nach dem Ausführen der procedure wird auch etwas in die Zwischenablage kopiert, zumindest zeigt das Menü über rechte Maustaste/Einfügen den Menüpunkt Einfügen als anwendbar an aber weder durch den Menüpunkt noch durch Strg+V lässt sich die Datei irgendwo hin kopieren. Es geschieht nichts, keine Fehlermeldung, der Menüpunkt Einfügen bleibt aktiv
Hat jemand eine Idee??
Gruß
Sidi61
Nachtrag: sorry - hat sich erledigt, konnte mit diesem Beitrag
http://www.delphipraxis.net/1038948-post7.html
von MarcoWarm das Problem lösen
Gruß