如何将文件拷贝到剪贴板

怎样判断当前剪贴板中的内容为文件 ,如何将指定文件 ( 不是文件内容 ) 拷贝到剪贴板中。请问各位大侠 : 怎样判断当前剪贴板中的内容为文件 ,如何将指定文件 ( 不是文件内容 ) 拷贝到剪贴板中。

int GetClipboardFormatName(

  UINT format,            // clipboard format to retrieve

  LPTSTR lpszFormatName,  // address of buffer for name

  int cchMaxCount         // length of name string in characters

);

如果 format=CF_HDROP 就是文件了


HANDLE SetClipboardData(

  UINT uFormat, // clipboard format

  HANDLE hMem   // data handle

);


menxin 的方案是可行的 .Delphi 定义了两个格式 :CF_PICTURE 和 CF_COMPONENT.

用户可以定义自己的格式 .不过因为 Formats 是 WORD 格式 ,所以系统中只能有

16 种格式 .打开 ClipBrd 单元 ,可以查到 .

  CF_PICTURE := RegisterClipboardFormat('Delphi Picture');

  CF_COMPONENT := RegisterClipboardFormat('Delphi Component');

你添加 :

  CF_MYFILE := RegisterClipboardFormat(' My File Format');


剪贴板操作 :

打开 ;

清空 ;

SetFormatData(CF_TEXT)  ---> 文件名 ;

SetFormatData(CF_MYFILE)  ---> 文件内容

关闭 ;


如果你只对文件名感兴趣 ,那只是一个文本格式 .取出内容 ,用 FileExists 查询

是否存在即可 .

registerClipboardFormat 函数登记新的剪贴板格式

格式的值在 OXC000 和 0XFFF 范围

IsClipboardFormatAvailable 函数判断剪贴板是否包含指定格式数据

格式可用返回非零值

windows 是有定义 :

可以用 cf_Hdrop;


uses shlobj,activex,clipbrd;


procedure TForm1.Button1Click(Sender: TObject);

var

  FE:TFormatEtc;

  Medium: TStgMedium;

  FileName:String;

  dropfiles:PDropFiles;

  pFile:PChar;

begin

  FileName:='c:/1.bmp';

  FE.cfFormat := CF_HDROP;

  FE.dwAspect := DVASPECT_CONTENT;

  FE.tymed := TYMED_HGLOBAL;

  Medium.hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_ZEROINIT, SizeOf(TDropFiles)+length(FileName)+1);

  if Medium.hGlobal<>0 then begin

    Medium.tymed := TYMED_HGLOBAL;

    dropfiles := GlobalLock(Medium.hGlobal);

    try

      dropfiles^.pfiles := SizeOf(TDropFiles);

      dropfiles^.fwide := False;

      longint(pFile) := longint(dropfiles)+SizeOf(TDropFiles);

      StrPCopy(pFile,FileName);

      Inc(pFile, Length(FileName)+1);

      pFile^ := #0;

    finally

      GlobalUnlock(Medium.hGlobal);

    end;

    Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal);

  end;

end;


参照 dragdrop 做了一个 ,还不错 .

上面这个例子把 filename 这个文件放在了 clipboard 上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值