如何获取剪贴板中复制的文件的文件名和路径名等信息?

很多的程序都涉及到文件的传输和发送,在文件发送模块开发时为了提供一个友好的操作方式,要实现这样的一个功能:

包邮透明垫板日系切垫板手账贴纸剪贴切割垫板橡皮章垫板A5切割板手工切割板刻刀和纸胶带迷你透明垫板A4笔刀
迷你小垫板 手帐垫板 多款可选 | 月销量236件
优惠价5.2元
原价¥12

淘口令:

¥7XDIXBgLaTP¥
 

在windows复制了文件或文件夹,在自己的程序中点击右键,弹出“粘贴”菜单,单击“粘贴”就把文件发送出去,如:

在聊天窗口中按下CTRL+V,获取用户选择的文件或文件夹发送给对端用户。

这其中存在一个问题:如何从剪切板数据中获取用户选择了哪些文件或文件夹呢?

经研究和测试,用如下的代码可以获取到文件列表信息:

if( ::OpenClipboard( NULL ) ) // 打开剪切板
{
HDROP hDrop = HDROP( ::GetClipboardData( CF_HDROP ) ); // 获取剪切板中复制的文件列表相关句柄
if( hDrop != NULL )
{
char szFilePathName[MAX_PATH+1] = {0};
UINT nNumOfFiles = DragQueryFile( hDrop, 0xFFFFFFFF, NULL, 0 ); // 得到文件个数

// 考虑到用户可能同时选中了多个对象(可能既包含文件也包含文件夹),所以要循环处理
for ( UINT nIndex=0 ; nIndex<nNumOfFiles; ++nIndex )
{
memset( szFilePathName, 0, MAX_PATH+1 );
DragQueryFile( hDrop, nIndex, szFilePathName, MAX_PATH ); // 得到文件名
}
}

::CloseClipboard(); // 关闭剪切板
}

这就是关于解决“如何获取剪贴板中复制的文件的文件名和路径名等信息?”等问题的方法,在你的程序中试试吧!

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发
CPPKU的头像-cppku-C++库

昵称

取消
昵称表情代码图片