【MoreWindows工作笔记10】OleGetClipboard 访问剪切板上的文件信息

【MoreWindows工作笔记9】OleGetClipboard 访问剪切板的文本内容 阅读详情

当我们复制文件时,会将文件的信息存储在剪贴板中,这个文件信息并不是文件路径的字符串。而是HDROP类型,这个类型可以参考之前《Windows界面编程系列》的《Windows界面编程第七篇 文件拖拽(文件拖放)》(地址:http://blog.youkuaiyun.com/morewindows/article/details/8634451)。

下面是完整的源代码:

// 【MoreWindows工作笔记10】OleGetClipboard 访问剪切板上的文件信息
// http://blog.youkuaiyun.com/morewindows/article/details/17655057
// By MoreWindows( http://blog.youkuaiyun.com/MoreWindows )
#include <Windows.h>
#include <ObjBase.h>
#include <iostream>
using namespace std;

void DisplayDataObject(IDataObject *pDataObject)
{
  FORMATETC fmtetc = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
  STGMEDIUM stgmedium;
  if (pDataObject->GetData(&fmtetc, &stgmedium) == S_OK)
  {
    cout<<"  剪切板数据格式上为CF_HDROP, 数据内容如下:"<<endl;
    HDROP hdrop = (HDROP)GlobalLock(stgmedium.hGlobal);
    int count = DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
    for(int i = 0; i < count; ++i) {
      char path[_MAX_PATH];
      DragQueryFile(hdrop, i, path, _MAX_PATH);
      cout<<path<<endl;
    }
    GlobalUnlock(stgmedium.hGlobal);
    ReleaseStgMedium(&stgmedium);
  } 
  else 
  {
    cout<<"Error!  剪切板数据格式不为CF_HDROP"<<endl;
  }
} 

int main()   
{
  printf("   【MoreWindows工作笔记10】OleGetClipboard 访问剪切板的文本内容\n");
  printf(" - http://blog.youkuaiyun.com/morewindows/article/details/17655053 -\n");
  printf(" -- By MoreWindows( http://blog.youkuaiyun.com/MoreWindows ) --\n\n");

  if (OleInitialize(0) != S_OK) return 0;
  IDataObject *pDataObject;
  if (OleGetClipboard(&pDataObject) == S_OK) 
  {
    DisplayDataObject(pDataObject);
    pDataObject->Release();
  }
  OleUninitialize();
  return 0;
}
复制一些文件,然后运行程序,运行结果如下所示:



文章中的OleInitialize、OleUninitialize、FORMATETC、STGMEDIUM等等剪贴板操作可以参考前一篇《【MoreWindows工作笔记9】OleGetClipboard 访问剪切板的文本内容》

地址http://blog.youkuaiyun.com/morewindows/article/details/17655053




本文地址:http://blog.youkuaiyun.com/morewindows/article/details/17655057   转载请标明出处,谢谢。

欢迎关注微博:http://weibo.com/MoreWindows 




Qt Coordinate System Qt 坐标系统Qt 坐标系统 数学基础 Qt坐标系统 视口 平移变换 缩放变换 setWindow 旋转 总结数学基础 矩阵与线性变换坐标系变换Qt坐标系统 视口和OpenGL一样,视口确定了画面在窗口(QWidget)中显示的区域,Qt的绘图坐标会完全映射到视口(View port)上,就像图示一样。默认情况下,窗口和视口是重合的,视口的大小覆盖了整个窗口。和OpenGL一样,Qt的QPa 阅读详情

相关推荐

基于Yolo11的无人机小目标检测系统的设计与性能优化改进项目实现

该项目旨在开发一个基于YOLO11的无人机目标检测系统,能够实时识别并定位无人机拍摄过程中捕捉的小目标。考虑到无人机拍摄的目标通常较小,系统将采用特定的调优策略,以提高小目标的检测精度和召回率。

m0_73723097的博客 1205

剪切板Hook

detour Windows剪切板是一种简单而且开销较小的IPC(InterProcess Communication,进程间通讯)机制,方便用户在不同程序间拷贝数据。在Windows操作系统中存在两种剪切板机制,即标准剪切板机制和OLE剪切板机制。 标准剪切板的基本机制是:Windows系统预留一块全局共享内存,提供数据的进程创建一个全局内存块,并将要传送的数据拷贝到内存中,接受数据的进程获

fengkuangfj的专栏 3205

告别混乱!用Cadence Capture CIS高效管理你的原理图库:以单逻辑器件K9F2G08U0M为例

本文以单逻辑器件K9F2G08U0M为例,详细介绍了如何使用Cadence Capture CIS高效管理原理图库。通过三级分类体系、工程化命名规范和智能检索技术,帮助工程师实现从混乱到有序的转变,提升团队协作效率和设计准确性。

aizhi0169的博客 400

使用Visual C++实现OLE剪贴板

---- 一、概述---- 在Windows操作系统中存在两种剪贴板机制:Windows标准剪贴板和OLE剪贴板机制。---- 标准的Windows剪贴板是一个被所有Windows应用程序共享的系统服务,因此它并没有自己的句柄或类。但你可以通过CWnd类的成员函数来管理剪贴板。---- 自从OLE(Object Linking and Embedding,对象链接和嵌入)诞生之后,Windows操

我的编程之旅 2652

超详细 VMware Horizon 虚拟桌面VDI安装步骤

主要的目的是模拟生产环境中的共享存储。自动桌面相当于共享电脑,大家使用同一个虚拟机,对虚拟机的修改都放在用户的配置文件中,RDS桌面池相当于共享的服务器,可以多人同时连接到服务器上。1:之前已经建立好了NFS的存储,这部分配置好后,以后的虚拟机可以安装到NFS的存储中。2: 使用Composer发布系统可以解决SID,机器名冲突的问题,更重要的可以节约磁盘空间,发布的所有系统可以访问一块磁盘。26: 域选择我们之前建立的域,用户名我输入的是管理员,可以在AD域新建用户点击查找,我这里用的是管理员。

vv12345的博客 1万+

火星遥感数据的获取与处理工具安装详解

有关火星遥感影像数据的那些事...

FengYingLuo的博客 5572

【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式

【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式

ffygvf的博客 208

迈创cameralink采集卡安装操作说明

迈创cameralink采集卡安装操作说明MIL软件安装MIL软件下载获取MIL软件安装MIL软件安装常见问题 MIL软件安装 MIL软件下载获取 MIL软件安装 解压MIL安装包,点击MilSetup.exe开始安装,如下图所示; 备注:64位系统MIL软件可以同时安装32位和64位客户端,本文档默认安装64位客户端,64位系统安装32位MIL方法后续再展开讲(不建议这样用,很麻烦) 点击Launch Installation开始安装,64位系统,默认只安装64位MIL客户端 根据采集卡驱动,选择M

qq_23107577的博客 9349

wxWidgets从剪切板获取数据

wxWidgets的剪切板实现windows下优先使用OLE接口,但是在使用OLE接口的时候对剪切板里面的数据处理中对部分格式采取了默认处理,有可能造成数据转换的错误,这个时候我们自己要写代码重新从剪切板里面读取数据,采用正确的格式转换数据处理!下面是一个示例函数:bool GetOleCli...

chenkuo4971的博客 333

MATLAB新手必看:Stewart平台运动学逆解从入门到实战(附完整代码)

本文详细介绍了如何使用MATLAB实现Stewart平台的运动学逆解,从基础原理到完整代码实现,涵盖并联机器人的数学建模、MATLAB编程和Simulink集成。通过实战案例和可视化分析,帮助新手快速掌握Stewart平台的运动学逆解技术,适用于机器人学和控制理论领域的研究与应用。

dream的博客 551

浅析MOS管导通过程及RC吸收电路设计要点

RC吸收电路 米勒电容 MOS导通过程

liangbo1999的博客 2万+

VC的剪贴板操作的总结

本文主要介绍了VC++/MFC中如下内容的剪贴板操作:1、文本内容的操作2、WMF数据的操作3、位图的操作4、设置使用自定义格式5、感知剪贴板内容的改变6、自动将数据粘贴到另一应用程序窗口一、文本内容的操作下面的代码示范了如何将文本内容复制到剪贴板(Unicode编码的先转化为ASCII):CString source;//文本内容保存在source变量中if( OpenClipboard() )

梦想---软件设计师 2171

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 136

C++获取剪贴板文件路径

C++与资源管理器交互,获取剪贴板复制的文件路径 #include &lt;oleidl.h&gt; #include &lt;comdef.h&gt; #include &lt;vector&gt; #include &lt;string&gt; std::vector&lt;std::string&gt; GetPaths() { std::vector&lt;std::strin...

SUPERAIN丶的博客 2242

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

剪贴板和OLE拖放

一、传统剪贴板      传统剪贴板的形式非常的简单,其基本思路是当复制时程序复制一个数据副本给全局内存对象,打开剪贴板并且清空剪贴板当中的数据,将全局内存对象复制给剪贴板最后关闭剪贴板;从剪贴板中获取数据的顺序是打开剪贴板获取全局内存对象,锁定全局内存对象后从中复制数据,解锁内存对象并且关闭剪贴板。需要注意的是剪贴板在某个时刻只能被一个程序所打开,如果试图打开一个已经被其他程序打...

570

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DELPHI基础教程 第七章 剪贴板和动态数据交换

第七章 剪贴板和动态数据交换(一) 应用程序间的数据交换是象Windows 这样的多任务环境的重要特性。作为一种基于Windows的开发工具,Delphi支持如下四种数据交换方式:剪贴板、动态数据交换 ( DDE)、对象联接与嵌入(OLE)以及动态联接库(DLLs)。这中间前三种方式最为常用,OLE功能最为强大,DDE次之。而剪贴板使用最为方便。在本章,我们只讨论剪贴...

weixin_30666943的博客 368

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

clipboard使用总结

概述clipboard.js是一款轻量级的实现复制文本到剪贴板功能的JavaScript插件。通过该插件可以将输入框,文本域,DIV元素中的文本等文本内容复制到剪贴板中 clipboard.js支持主流的浏览器:chrome 42+; Firefox 41+; IE 9+; opera 29+; Safari 10+; 官网使用方式引入js文件以下所有的代码都使用到以下js文件<scri

不积跬步无以至千里; 不积小流无以成江海 6万+

Windows API一日一练(86)GetClipboardData函数

前面介绍怎么样把数据放到剪贴板里面,那么又是怎么样从剪贴板里面获取数据出来呢?当然还是需要使用其它的API函数来获取剪贴板里的数据。获取剪贴板里的数据时,是不知道当前剪贴板里是否有数据的,也不知道剪贴板里的数据格式是什么。那么下面就来解决这两个问题,先使用函数IsClipboardFormatAvailable来获取剪贴板里的格式是否可以处理,接着使用函数OpenClipboard打开剪...

anjichan4261的博客 989
上一篇: 【MoreWindows工作笔记9】OleGetClipboard 访问剪切板的文本内容
下一篇: 【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式
MoreWindows
MoreWindows 《白话经典算法》、《秒杀多线程》作者 《白话经典算法》、《秒杀多线程》作者 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄15年 2万+粉丝 157原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值