如何将文件拷贝到剪贴板

摘要:
如何确定当前剪贴板的内容是否为文件,以及如何将指定文件复制到剪贴板。

怎样判断当前剪贴板中的内容为文件,如何将指定文件(不是文件内容)拷贝到剪贴板中。请问各位大侠:怎样判断当前剪贴板中的内容为文件,如何将指定文件(不是文件内容)拷贝到剪贴板中。
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上.

免责声明:文章转载自《如何将文件拷贝到剪贴板》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在mac环境下用c#进行SDL2游戏开发frida hook_RegisterNatives--使用frida打印so中动态注册的函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

centos 重启网络服务的方法

linux 重启网络服务的方法 - Linux - 5x54学习笔记 - Linux自学手册、Linux常见问题解决、原创作品整理 linux 重启网络服务的方法 如果是redhat或CentOS,重启网络可以输入 复制内容到剪贴板代码: service network restart 或者 复制内容到剪贴板代码: /etc/rc.d/init.d/ne...

vs 中 vim vax 快捷键

高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但VIM的强大之处在于他的命令行模式!你会发现,在你越来越了解VIM之后,你就会花越来越少的时间使用插入模式了。 使用 h,j,k,l 使用VIM高效率编辑的第一步,就是放弃使用...

Android Clipboard(复制/剪贴板)

Android提供的剪贴板框架,复制和粘贴不同类型的数据。数据可以是文本,图像,二进制流数据或其它复杂的数据类型。 Android提供ClipboardManager、ClipData.Item和ClipData库使用复制和粘贴的框架。为了使用剪贴板的框架,需要把数据转化为剪辑对象,然后把该对象为全系统剪贴板。 为了使用剪贴板,需要通过调用getSyste...

【291】Python 中字符串添加到剪贴板

参考:如何使用Python将字符串复制到Windows上的剪贴板上? 实现代码如下: from Tkinter import Tk r = Tk() r.withdraw() r.clipboard_clear() r.clipboard_append('复制到剪贴板的内容') r.update() r.destroy() 写成函数的形式:...

用Navicat Premium图标编辑器创建表的方法

Navicat Premium 作为一款常见的数据库管理工具,功能非常的强大。其中图表编辑器由画布和垂直的工具栏组成,方便设计图表,例如添加对象、设置图表格式和打印模型等。一些新手用户对这方面的使用不是很了解,下面给大家分享一下用Navicat Premium图标编辑器创建表的方法? 点击“新建图表”即可创建一个新的图表。 创建一个新的表,从图表工具栏点击...

【Windows编程】系列第九篇:剪贴板使用

上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能。 剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到。通过剪贴板,我们就可以将数据从一个应用程序传递到另一个应用程序,是一种简单的进程间通信。 许多文档处理软件都有复制、剪切、粘贴功能,这些都是用Windows剪贴板实现的,当然我们也可以在我们的...