如何将文件拷贝到剪贴板
点击次数:77 次 发布日期:2008-11-09 08:39:50 作者:源代码网
|
源代码网推荐 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); 软件开发网 www.mscto.com 源代码网推荐 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上 源代码网推荐 源代码网供稿. |
