Einzelnen Beitrag anzeigen

H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#1

[D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 29. Jul 2010, 12:06
Hallo DPler,

entschuldigt bitte wenn ich ein weiteres Thema zu den vielen anderen Clipboard-Themen erstelle, aber die anderen führen leider nicht zur Lösung.
Nun zu meinem Problem:
Ich möchte gerne Dateien in die Zwischenablage kopieren und woanders einfügen. Beim kopieren geht etwas schief

dazu verwende ich diesen Code:
Delphi-Quellcode:
//################################################
// CopyFilesToClipboard
//################################################
procedure TfrmAnfrage.CopyFilesToClipboard(FileList: string);
var
  DropFiles: PDropFiles;
  hGlobal: THandle;
  iLen: Integer;
begin
  iLen := Length(FileList) + 2;
  FileList := FileList + #0#0;
  hGlobal := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE,
    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
ich habe
(PChar(DropFiles) durch
(PAnsiChar(DropFiles) bereits ersetzt da es sonst zu einem Fehler beim kopieren führt.

dann habe ich das Tool Clipboard-Explorer besorgt
und folgende abweichung beim kopieren im Explorer und beim kopieren per Programm festgestellt:

Explorer: HDROP: C:\Users\XXX\Documents\RAD Studio\Projekte\Hexacom\SalesBoard\bin\Anhang\10_P romotion2010_Q3.pdf
Programm: HDROP: C:\Users\XXX\Documents\RAD Studio\Projekte\He????.?.lesBoard\bin\Anhang\10_Pr omotion2010_Q3.pdf

desweiteren wird per programm nur der HDROP erstellt.
Beim Explorer kopieren der PDF: an die 11 Formate (DataObject,ShellIDListArray,dataobjectAtrribute.. .usw)

Ich wäre euch für jeden Tipp sehr Dankbar!

MFG
H3llsing
  Mit Zitat antworten Zitat