Einzelnen Beitrag anzeigen

Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 2. Aug 2010, 11:49
*räusper*

Ein Unicode-Problem sollte man nicht damit lösen es zu ignorieren. Falls mal Unicodezeichen im Pfad vorkommen 'المسار_الأكاديمي.png' ... (oops hoffentlich hat google das richtig übersetzt) hilft dir diese routine nicht weiter. Also besser so:



Delphi-Quellcode:
procedure CopyFilesToClipboard(FileList: string);
var
  DropFiles: PDropFiles;
  hGlobal: THandle;
  iLen: Integer;
begin
  iLen := Length(FileList);
  hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf(TDropFiles) + ((iLen + 2) * SizeOf(Char)));
  if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.');
  try
    DropFiles := GlobalLock(hGlobal);
    if (DropFiles = nil) then raise Exception.Create('Could not access allocated memory.');
    try
      DropFiles^.pFiles := SizeOf(TDropFiles);
      DropFiles^.fWide := (SizeOf(Char) = SizeOf(WideChar));

      if FileList <> 'then
        Move(FileList[1], (PByte(DropFiles) + SizeOf(TDropFiles))^, iLen * SizeOf(Char));
    finally
      GlobalUnlock(hGlobal);
    end;
    Clipboard.SetAsHandle(CF_HDROP, hGlobal);
  except
    GlobalFree(hGlobal);
  end;
end;
Dann geht auch sowas:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  CopyFilesToClipboard('C:\Temp\المسار_الأكاديمي.png');
end;
viel Spaß

Marco
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat