通过程序如何实现,选择某个文件,将其拷贝到剪贴板中?

解决方案 »

  1.   

    procedure CopyToClipBoard(FileName:string);
    var   DataHandle: THandle;
          DataPointer: PDROPFILES;
    begin
      DataHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE,SizeOf(DROPFILES)+2+Length(FileName));
      DataPointer := PDROPFILES(GlobalLock(DataHandle));
      FillChar(DataPointer^,SizeOf(DROPFILES)+2+Length(FileName),0);  DataPointer.pFiles:=SizeOf(DROPFILES);
      DataPointer.pt:=Point(0,0);
      DataPointer.fNC:=False;
      DataPointer.fWide:=False;
      Move(FileName[1],Pointer(Integer(DataPointer)+SizeOf(DROPFILES))^,Length(FileName));
      GlobalUnlock(DataHandle);
      OpenClipboard(MainForm.Handle);
      EmptyClipboard;
      SetClipboardData(CF_HDROP, DataHandle);
      CloseClipboard;
    end;其中FileName是完整路径名。如有多个文件,可用#0隔开,例如:
    FileName:='c:\a.txt'+#0+'c:\b.txt'+#0;