同WINDOWS系统的功能一样,可以在复制以后到任意空间粘贴,解答马上给分,在线等!谢谢

解决方案 »

  1.   

    特别声明,这是别人的答复,我没有试过unit Unit1;interfaceuses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     StdCtrls,ShlObj;type
     TForm1 = class(TForm)
       Button1: TButton;
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;var
     Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    const  FileName:string='c:\netlog.txt';
    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(Form1.Handle);
     EmptyClipboard;
     SetClipboardData(CF_HDROP, DataHandle);
     CloseClipboard;
    end;end.
      

  2.   

    说的挺麻烦,就是copy文件呗?CopyFileTo()
      

  3.   

    bool __fastcall CopyToClipboard(AnsiString file)
    {
        int nLen;
        char* Data;
        HANDLE hMem;    if (file.IsEmpty()) return false;    nLen = 20 + file.Length() + 2;
        hMem = GlobalAlloc(GMEM_MOVEABLE
            |GMEM_DDESHARE|GMEM_ZEROINIT,
            nLen);
        if (hMem==NULL) return false;
        Data = (char*)GlobalLock(hMem);
        *(DWORD*)Data = 20;
        strcpy(Data+20, file.c_str());
        GlobalUnlock(hMem);
        if (OpenClipboard(NULL)) {
            EmptyClipboard();
            if (SetClipboardData(
                CF_HDROP,hMem)!=0)
                hMem = NULL;
            CloseClipboard();
        }
        if (hMem) GlobalFree(hMem);    return hMem ? false : true;
    }bcb的,你改一下
      

  4.   

    //和楼上原理一样,封装一下
    uses ShlObj, ClipBrd;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;// Example
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CopyFilesToClipboard('C:\temp\temp.Txt'#0'C:\temp\temp.bmp');
    end;