从剪贴板上获得要复制/剪贴的文件路径之后,如何完成文件/文件夹的粘贴呢。下面列出了两个函数用来完成这些功能

  1. //复制的粘贴
  2. DWORD VrvCopyFile( LPCWSTR lpSrc, LPCWSTR lpDst )
  3. {
  4. DWORD   dwError         =   0;
  5. CString strFiles = lpSrc;
  6. CString strFilePath = _T("");
  7. int idx= 0;
  8. while (strFiles.Find('#',idx) != -1)
  9. {
  10. int y = strFiles.Find('#',idx);
  11. strFilePath = strFiles.Mid(idx,y - idx);
  12. TCHAR szFile[MAX_PATH] = {0};
  13. lstrcpy(szFile,strFilePath.GetBuffer());
  14. strFilePath.ReleaseBuffer();
  15. idx = strFiles.Find('#',idx);
  16. idx++;
  17. SHFILEOPSTRUCT shFileOp = {0};
  18. shFileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
  19. shFileOp.pFrom = szFile;
  20. shFileOp.pTo = lpDst;
  21. shFileOp.wFunc = FO_COPY;
  22. dwError = SHFileOperation(&shFileOp);
  23. }
  24. return dwError;
  25. }
  26. //剪贴的粘贴
  27. DWORD VrvMoveFile(LPCWSTR lpSrc, LPCWSTR lpDst)
  28. {
  29. DWORD   dwError         =   0;
  30. CString strFiles = lpSrc;
  31. CString strFilePath = _T("");
  32. int idx= 0;
  33. while (strFiles.Find('#',idx) != -1)
  34. {
  35. int y = strFiles.Find('#',idx);
  36. strFilePath = strFiles.Mid(idx,y - idx);
  37. TCHAR szFile[MAX_PATH] = {0};
  38. lstrcpy(szFile,strFilePath.GetBuffer());
  39. strFilePath.ReleaseBuffer();
  40. idx = strFiles.Find('#',idx);
  41. idx++;
  42. SHFILEOPSTRUCT shFileOp = {0};
  43. shFileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
  44. shFileOp.pFrom = szFile;
  45. shFileOp.pTo = lpDst;
  46. shFileOp.wFunc = FO_MOVE;
  47. dwError = SHFileOperation(&shFileOp);
  48. }
  49. return dwError;
  50. }

源路径存放了多个文件路径,使用#分开,每个文件/文件夹逐个粘贴。

转载于:https://blog.51cto.com/3457302/902593

C++学习之:复制和粘贴文件/文件夹相关推荐

  1. 如何在Linux终端中复制和粘贴文本、文件和文件夹。

    复制和粘贴是电脑上使用最多的操作之一.虽然使用Ctrl+C和Ctrl+V键盘快捷键很容易做到这一点,但在Linux终端上就不是那么简单了.你有几种选择来完成这项工作.以下是你如何在Linux终端中复制 ...

  2. 复制粘贴Excel文件后,显示“安全警告 宏已被禁用”,复制后得到的文件看不到内容

    问题 系统:Win10 Excel版本:2016 我将一个原本正常的Excel文件复制到另一个文件夹后,打开就提示安全警告 宏已被禁用(复制操作时电脑莫名会变卡),而且原来文件里的数据也看不到了. 复 ...

  3. 解决QQ识图后复制文字然后将其粘贴到文件重命名中,总是显示重命名不成功

    如图再使用QQ屏幕识图后,复制文字,然后粘贴到文件重命名中,提示文件名不能包含下列任何字符: \ / : * ? " < > l 解决方法: 贴完以后会发现有个类似于软回车一样的 ...

  4. vi中多个文件相互之间的复制、粘贴功能简介!

    大家在vi编辑中,常常遇到想把文件A里面的一行或多行,复制到B文件里面去  (可能很多人不知道怎么办),该怎么做了?  下面是几中方法:  1.如果你有多台机器,而且是联网的,你可以用netterm虚 ...

  5. (最简单)安装vmware-tools实现复制粘贴和文件复制粘贴

    现在已经推出开源的open-vm-tools工具了,无需手动从安装包安装vmware-tools. 一.如果你以前安装过VMware-tools,需要使用下面的命令彻底删除它. sudo vmware ...

  6. 电脑上复制粘贴同名文件被覆盖了怎么办

    平时我们在电脑上手动复制文件的时候,如果出现同名文件,会弹出一个提示窗口,询问是否覆盖还是跳过,这样对于文件少的,是挺方便的,但是一旦文件多了起来,复制时,你是要先选择覆盖还是跳过,又或者是自动编号同 ...

  7. vim 在两个不同文件中复制与粘贴(简单,详细)

    vim 在两个不同文件中复制与粘贴 (vim在系统剪切板的复制与粘贴) 假设将 b文件的某内容 复制到 a文件中 普通模式下 :reg 命令 可以查看vim 自己的粘贴板,分别是 ". 0. ...

  8. VMware安装vmtools后不能粘贴复制和拖拽文件

    1.环境 Vmware16 , Ubuntu 18.04 2.事由 安装完Ubuntu18,安装Vmtools后,不能实现与主机之间文本的复制粘贴,文件亦无法与主机之间拖拽复制.重新安装Vmtools ...

  9. js html table转excel文件 js获取(复制 / 粘贴板)的内容js复制table粘贴到excel中

    js html table转excel文件 参考资料: 70行代码实现vue+sheetJs导出excel功能 sheetJs的git项目代码 代码太长建议直接粘贴复制 <!DOCTYPE ht ...

最新文章

  1. 这一次,我拒绝了Python,选择了Go
  2. AI圈真魔幻!谷歌最新研究表明卷积在NLP预训练上竟优于Transformer?LeCun暧昧表态...
  3. SAP RETAIL 供应商寄售库存的UB STO
  4. 为何需要Android组件化,如何搭建?
  5. 【企业管理】14 项管理原则
  6. php myadmin utf,phpmyadmin在哪里设置utf_8
  7. Vue指令篇_v-model_数据双向绑定
  8. 网站页首可关闭广告条
  9. php对外发包引发服务器崩溃的终极解决方法分享
  10. Java EE 7:新增功能???
  11. 为QT添加qss样式文件
  12. PostgreSQL 最佳实践 - 在线增量备份与任意时间点恢复
  13. Atitit 常见每日流程日程日常工作.docx v9 每次pertime Atitit 常见每日每天流程日程日常工作 v9 raf attilax总结分享.docx Ver history i
  14. Arm中国换帅风波始末 | 钛媒体深度
  15. 股票量化分析工具QTYX使用攻略——北上资金持仓选股(更新2.5.8)
  16. Xmind2021安装激活破解
  17. 4.9-4.10 矩阵乘法的性质 矩阵的幂运算 矩阵的转置及其性质
  18. 美国音乐学院计算机音乐专业排名2015年,美国音乐学校排名Top100
  19. 去除idea中xml黄色背景
  20. Embedding Cardinality Constraints in Neural Link Predictors (SAC 2019)

热门文章

  1. 手写简单的双向数据绑定
  2. 第九章 性能监控诊断
  3. 经典算法详解(8)数的分组
  4. SpringBoot非官方教程 | 第八篇:SpringBoot整合mongodb
  5. 营救Peter——下载XCode的六种姿势
  6. iterator与iterable
  7. C# 获取几种路径的方式
  8. vue-cli3集成typescript,sass variables,多页打包
  9. CircleProgressView
  10. Ext4文件系统架构分析(一)