- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
C++实现对回收站里的文件进行操作的示例代码
方式一:设置不同的SHFILEOPSTRUCT结构体,调用SHFileOperation函数就可以实现拷贝、删除、移动等文件操作
SHGetSpecialFolderLocation函数:
原型:
HRESULTSHGetSpecialFolderLocation(HWNDhwnd,intcsidl,
PIDLIST_ABSOLUTE*ppidl)
该函数用于获取特殊文件夹的物理路径。它接受以下参数:
hwnd:可选参数,指定父窗口的句柄。如果不需要与窗口关联,可以设置为NULL。csidl:表示特殊文件夹的标识符(CSIDL),用于指定要获取的文件夹。ppidl:一个指向PIDLIST_ABSOLUTE类型的指针,用于接收文件夹的ITEMIDLIST。
功能:根据给定的特殊文件夹标识符,该函数将返回与之对应的文件夹的物理路径。通过该函数获取回收站文件夹的物理路径可以进一步操作其中的文件。
SHGetPathFromIDList函数:
原型:
BOOLSHGetPathFromIDList(PCIDLIST_ABSOLUTEpidl,LPWSTRpszPath)
该函数用于根据ITEMIDLIST(在这里是通过SHGetSpecialFolderLocation获得的PIDLIST_ABSOLUTE)返回文件夹的路径。
功能:该函数将ITEMIDLIST转换为文件夹的字符串路径。
SHFileOperation函数:
原型:
intSHFileOperation(constSHFILEOPSTRUCT*lpFileOp)
该函数用于执行文件操作,如复制、移动和删除等。它接受以下参数:
lpFileOp:指向SHFILEOPSTRUCT结构的指针,描述要执行的文件操作。
功能:该函数执行文件操作,可以将文件复制、移动或删除到指定位置,包括回收站。可以设置FOF_ALLOWUNDO标志以启用撤销功能。
SHFILEOPSTRUCT结构体:
定义:
typedefstruct_SHFILEOPSTRUCT
{
HWNDhwnd;
UINTwFunc;
LPCWSTRpFrom;
LPCWSTRpTo;
FILEOP_FLAGSfFlags;
BOOLfAnyOperationsAborted;
LPVOIDhNameMappings;
LPCWSTRlpszProgressTitle;
}SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
成员变量:
hwnd:可选参数,表示父窗口的句柄。wFunc:表示要执行的文件操作类型,如复制、移动、删除等。pFrom:指向源文件/文件夹的路径字符串。pTo:指向目标文件/文件夹路径字符串。fFlags:控制文件操作的标志位,如FOF_ALLOWUNDO、FOF_NOCONFIRMATION等。fAnyOperationsAborted:如果用户取消了任何一个操作,则为TRUE。hNameMappings:保留参数,应设置为NULL。lpszProgressTitle:可选参数,用于在进度对话框中显示自定义标题。
该结构描述了要进行的文件操作的详细信息,包括源文件/文件夹路径、目标路径、操作类型和标志等。传递此结构给SHFileOperation函数可执行相应的文件操作。
代码示例:
使用ShellAPI:你可以使用Windows的ShellAPI来访问回收站,并获取回收的文件信息。
1、使用SHGetSpecialFolderLocation函数通过指定回收站的CSIDL_BITBUCKET标识符来获取回收站的物理路径。
2、使用SHGetPathFromIDList函数将回收站路径转换为字符串格式存储在sFolderPath中。
3、构建搜索路径sSearchPath,用于遍历回收站文件夹中的文件。
4、使用FindFirstFile和FindNextFile函数遍历回收站文件夹中的每个文件。
5、对于每个文件,使用_tprintf函数在控制台上输出其文件名和完整路径。
6、最后使用FindClose关闭文件搜索句柄。
#includeWindows.h
#includeShlObj.h
intmain(){
//获取回收站的路径
LPITEMI
文档评论(0)