电脑中剪贴板是什么 剪贴板是什么 手机禁止读取剪贴板

大家好,我们今日讲解&34;VBA信息获取与处理&34;教程中第十一个专题&34;VBA中剪贴板(Clipboard)的应用&34;的第一节&34;剪贴板Clipboard是什么&34;,这个专题是非常有用的知识点,希望大家能掌握利用 。
大家好,在之前的专题讲解中,对于来自网络数据的抓取,曾经讲过一个细节,就是将数据先放到剪贴板中,然后再粘贴到工作表内,大家可以再看一看资料006工作表.XLSM
中Sub CopyToClipbox过程的内容,那么什么是剪贴板,利用它有什么好处呢?对于VBA的操作,这个知识点有哪些方便独到之处呢?我们这个专题就来讲解 。
第一节 剪贴板Clipboard是什么我们在平时操作文件的时候经常会用到Ctrl+C/X、Ctrl+V的操作,就是把我们需要的内容复制,然后粘贴到我们需要的地方,这种操作非常符合人们感观上的认识,其实这种动作就是把内容首先放到了剪贴板即专用的内存中,只不过这种操作是在后台进行,我们没有看到罢了 。

电脑中剪贴板是什么 剪贴板是什么 手机禁止读取剪贴板

文章插图
1 剪贴板Clipboard的定义及VBA的引用Windows的帮助文件中有这样的叙述:剪贴板是从一个地方复制或移动并打算在其他地方使用的信息的临时存储区域 。可以选择文本或图形,然后使用&34;剪切&34;或&34;复制&34;命令将所选内容移动到剪贴板,在使用&34;粘贴&34;命令将该内容插入到其他地方之前,它会一直存储在剪贴板中 。例如,您可能要复制网站上的一部分文本,然后将其粘贴到电子邮件中 。
对于VBA而言,MSForms库包含一个名为DataObject的对象,该对象支持在Windows剪贴板上使用文本字符串 。VBA不支持剪贴板上其他非文本值所需的数据类型 。若要在代码中使用数据对象,必须设置对Forms 2.0 Object Library的引用 。在VBA中添加引用如下:
转到VBA编辑器中的&34;工具&34;菜单,然后选择&34;引用&34;项 。在出现的对话框中,向下滚动列表,直到找到适当的库(常用的引用列在列表的顶部,之后,引用按字母顺序列出) 。找到代码所需的引用时,选中引用标题旁边的复选框,然后单击&34;确定&34;
2 剪贴板Clipboard对象的特点这个对象有什么特点,又是如何工作的呢?
1)公开性剪贴板中的数据存放在全局内存中,因此大部分的windows应用程序都可以访问其中的数据,在遵守相关API函数约定的前提下,应用程序可以自由地打开剪贴板(OpenClipboard),读取剪贴板内的数据(GetClipboardData),或者清空剪贴板(EmptyClipboard),然后设置剪贴板内的数据(SetClipboardData),最后关闭剪贴板(CloseClipboard);
2)独占性 Windows规定应用程序对剪贴板的访问是独占性的,当一个应用程序使用OpenClipboard打开剪贴板之后,其他程序就不可以再访问剪贴板,直至前一程序使用CloseClipboard关闭剪贴板 。通常我们使用剪贴板的时候不会感觉受其他程序的影响,这是因为剪贴板内的数据操作都是在内存中进行的,速度非常快,对于特大块的数据,应用程序还可以选择延时处理(Delayed Rendering)机制以保证速度 。但是,我们在对剪贴板编程的时候要注意:每次使用完剪贴板之后一定要记得使用CloseClipBoard关闭它;在OpenClipboard和CloseClipboard之间不要放置耗时很长的代码,以免影响其他程序正常工作 。
3)规范性设置剪贴板内数据的应用程序窗口被称为剪贴板数据拥有者(ClipboardOwner),可以通过GetClipboardOwner函数获得它的句柄 。反过来说,如果一个应用程序想向剪贴板中放入数据,需要先成为ClipboardOwner 。程序要成为ClipboardOwner需要先将自己的句柄传给OpenClipboard函数,如果剪贴板中已经有数据存在,还需要先调用EmptyClipboard;
4)多元性剪贴板中可以同时存放多种格式的数据,各自放在全局内存的不同位置;剪贴板中的数据有标准格式/预定义格式的,如文本、位图、Wav声音……,也有非标准格式/用户自定义格式,比如word中的域和公式、Excel中的图表 。
5)可检索性对于每种在剪贴板中存放过的格式,Windows都会给它分配一个独特的长整型编号,通过这个编号可以知道对应的数据格式的名称(GetClipboardFormatName),或者查询对应的数据在剪贴板中是否存在(IsClipBoardFormatAvailable),如果存在,还可以通过这个编号找到对应的数据在内存中存放的位置(GetClipboardData) 。
对于标准格式,这个编号是固定的,可以通过VB6自带的APIViewer查询以CF_开头的常量得到,比如:
Public Const CF_TEXT = 1
Public Const CF_BITMAP = 2
Public Const CF_METAFILEPICT = 3
Public Const CF_SYLK = 4