Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Win7x64/DelphiXE2: Dateien in die Zwischenablage kopieren?

  Alt 29. Aug 2012, 15:26
Hallo! In früheren Delphi/Windows-Versionen habe ich häufig folgende Methode verwendet, um Dateien in die Zwischenablage zu kopieren:
Delphi-Quellcode:
procedure CopyFilesToClipboard(FileList: string);
{Achtung: Dateien mit einem #0 trennen!
Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CopyFilesToClipboard('C:\Bootlog.Txt'#0'C:\AutoExec.Bat');
end;}

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 scheint es aber (wegen Windows 7x64? Delphi XE2?) nicht mehr zu funktionieren. Kann jemand das bestätigen?
  Mit Zitat antworten Zitat