看雪论坛
发新帖

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

MDebug 2017-9-11 15:30 273
如题。我自己用了 一个间接的办法,就是得到系统 桌面右键菜单,然后通过 这个执行菜单 撤销命令。但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();
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (4)
MDebug 2017-9-12 10:24
2
好冷清  没人回答
Thead 2017-9-12 23:05
3
遍历回收站,取最后删除的那一个,然后移动?文件名可能要特殊处理
MDebug 6天前
4
这种方式,我感觉不是最好的。我早想过了
yezhulove 6天前
5
直接对着explorer发送  ctrl  +  z。
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.011, SQL: 9 / 京ICP备10040895号-17