Hallo,
mit dieser Prozedur kann ich Dateien in die Zwischenablage kopieren:
Delphi-Quellcode:
procedure 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('
Could not allocate memory.');
begin
DropFiles := GlobalLock(hGlobal);
DropFiles^.pFiles := SizeOf(TDropFiles);
Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
GlobalUnlock(hGlobal);
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
end;
Nun hab ich aber einige Dateien im Format WideString, die Zeichen beinhalten, die nicht mit
ANSI darstellbar sind. Ich habe nun schon einiges ausprobiert, zum Beispiel die Strings in WideStrings umbenannt oder es mit iLen := Length(Filelist)*SizeOf(WideChar) probiert, aber es passiert leider nichts.
Ich denke es ist eine Kleinigkeit die Funktion umzuschreiben, aber ich komm nicht drauf - vielleicht muss man die Konstanten ändern?! Bitte helft mir.. Danke..