首页
社区
课程
招聘
[求助]如何实现 系统 CTRL +Z 撤销删除文件
发表于: 2017-9-11 15:30 3459

[求助]如何实现 系统 CTRL +Z 撤销删除文件

2017-9-11 15:30
3459
如题。我自己用了 一个间接的办法,就是得到系统 桌面右键菜单,然后通过 这个执行菜单 撤销命令。但Invokecommand 函数返回S_OK。但系统没有任何效果。有谁弄过这个。求教。



OleInitialize(NULL);
IShellFolder * pIShellFolder = NULL;
SHGetDesktopFolder(&pIShellFolder);

IShellView * pIShellView = NULL;
pIShellFolder->CreateViewObject(NULL, IID_IShellView, (LPVOID*)&pIShellView);

pIShellFolder->Release();

IContextMenu * pIContextMenu = NULL;
pIShellView->GetItemObject(SVGIO_BACKGROUND, IID_IContextMenu, (LPVOID*)&pIContextMenu);

pIShellView->Release();


HMENU hmenuCtx = CreatePopupMenu();
HRESULT hr = pIContextMenu->QueryContextMenu(hmenuCtx, 0, 1, 0x00007FFF, CMF_NORMAL | CMF_VERBSONLY);

CMINVOKECOMMANDINFOEX CmdInfoEx = { 0 };
CmdInfoEx.cbSize = sizeof(CMINVOKECOMMANDINFOEX);
CmdInfoEx.fMask = CMIC_MASK_FLAG_NO_UI;
CmdInfoEx.lpVerb = (LPCSTR)(INT_PTR)MAKEINTRESOURCE(uiCommand - 1);
#ifdef UNICODE
CmdInfoEx.lpVerbW = (LPCWSTR)(INT_PTR)MAKEINTRESOURCE(uiCommand - 1);
CmdInfoEx.fMask |= CMIC_MASK_UNICODE;
#endif

hr = pIContextMenu->InvokeCommand((CMINVOKECOMMANDINFO*)&CmdInfoEx);

pIContextMenu->Release();

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 44
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
好冷清  没人回答
2017-9-12 10:24
0
雪    币: 407
活跃值: (1816)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
遍历回收站,取最后删除的那一个,然后移动?文件名可能要特殊处理
2017-9-12 23:05
0
雪    币: 44
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
这种方式,我感觉不是最好的。我早想过了
2017-9-13 11:05
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
直接对着explorer发送  ctrl  +  z。
2017-9-13 11:08
0
游客
登录 | 注册 方可回帖
返回
//