我正在构建一种码头,我很难找到如何保存“运行”、“搜索”、“帮助”、“打印机”等内容并在此之后重新打开它们。
我试过这个:
CComPtr<IShellFolder> pDF;
SHGetDesktopFolder(&pDF);
LPITEMIDLIST pidlPrintersAndFaxes=0;
hr=pDF->ParseDisplayName(0, 0, L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{2227A280-3AEA-1069-A2DE-08002B30309D}", 0, &pidlPrintersAndFaxes, NULL);
CComPtr<IShellFolder> pSF;
hr=pDF->BindToObject(pidlPrintersAndFaxes, 0, IID_IShellFolder, (void**)&pSF);
LPITEMIDLIST pidlPrinter=0;
hr=pSF->ParseDisplayName(0, 0, L"PDFCreator", 0, &pidlPrinter, NULL);
CComPtr<IContextMenu> pPrinterCtxMenu;
hr=pSF->GetUIObjectOf(0, 1, (LPCITEMIDLIST*)&pidlPrinter, IID_IContextMenu, 0, (void**)&pPrinterCtxMenu);
CMINVOKECOMMANDINFO cmd={0};
cmd.cbSize=sizeof(CMINVOKECOMMANDINFO);
cmd.lpVerb=MAKEINTRESOURCE(0);
cmd.nShow=SW_SHOWNORMAL;
hr=pPrinterCtxMenu->InvokeCommand(&cmd);
Run Code Online (Sandbox Code Playgroud)
无论我在最后一行尝试 InvokeCommand 什么,总是返回 E_INVALIDARG。我用 ShellExecuteEx 试了一下,得到了同样的错误。
我尝试了所有可能的动词。
我试图枚举动词并得到 E_INVALIDARG。
我不能让它工作,但在正常的文件系统路径上,比如文件夹上的“c:\”和 clsid。我错过了什么 ?
我正在考虑编写一个shell扩展,所以当单击一个文件时,可以对它执行一个动作.(像任何其他上下文菜单:))
在上下文菜单中插入新菜单项并对一个或多个文件执行操作所需的最小值是多少.比较的例子是我选择了10个文件和Send to Zip.
我读到编写一些非托管代码是必需的,但我对c ++非托管代码的知识大约为零所以我想尽可能少地在Windows上下文菜单中获取菜单项(文件>右键单击).之后,我想调用一个C#控制台应用程序来进行主处理,那么是否可以从非托管代码调用ac#console app?
另外,我需要什么类型的visual studio项目来创建Windows Shell程序?我可以选择哪种项目类型:
干杯
我正在寻找一种方法,以编程方式将文件夹添加到Windows资源管理器中的收藏夹.它的Windows资源管理器特定,基于这个项目:http://www.codeproject.com/Tips/132804/Open-folders-using-a-Run-Command
到目前为止,我已经尝试过Process Monitor并搜索注册表,但我似乎无法找到我的Windows资源管理器收藏夹regedit.
当您在Windows Shell中按F2编辑文件名时,可以理解一组有限的编辑键 - 例如CTRL +箭头键,Home,End,CTRL + X. 例如,当您键入CTRL +右箭头时,光标将在短划线后停止,但不会在一段时间内停止.这些操作是否可以自定义,如果可以,如何?
任何与您没有直接关系但您认为可能有助于该主题的其他信息也将受到赞赏.
我想遍历给定目录中的所有文件并返回其版本号和exe名称.我已经尝试深入挖掘外壳以确定是否可以将其关闭,但是我无法找到解决方案.任何提示将不胜感激.
我使用Shell扩展DLL(C++)创建了一个上下文菜单.当用户单击任何资源管理器文件夹时,将显示新创建的上下文菜单,其中包含子菜单.我想在子菜单之间添加一个行分隔符
我一直在使用IShellLink界面,并对如何映射热键组合感到困惑.
仅应用单个热键时,返回值对应于记录的虚拟键代码; 例如F5 == 0x74
但是,当使用组合时,会返回一个我没有解密的无证值; 例如CTRL + ALT + A == 0x641
使用什么操作来组合多个虚拟键码?
我需要从批处理作业中启动2个后台进程,然后等待它们.Unix shell模拟是:
myprocess1 -flags1 &
pid1=$!
myprocess2 -flags2 &
pid2=$!
wait ${pid1}
wait ${pid2}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在基于COM的Windows资源管理器外壳扩展中,使用从COM接口方法HRESULT返回的返回值表示错误条件.
但是,如果一个COM接口方法的体内(或C++对象的方法中直接或间接调用COM方法)C++异常(例如std::runtime_error,std::bad_alloc,std::invalid_argument等)被抛出,请问究竟怎样呢?
这只是一个未定义的行为吗?
或者C++异常以某种方式转换为Win32结构化异常(SEH)?
如果是这样,转换过程的机制是什么?
我有一些用于文件夹视图的Windows命名空间shell扩展.我想用它来与具有特定文件扩展名的文件进行用户交互.这些文件是由我的其他应用程序创建的.
如何在Windows注册表中正确注册它.我应该为我的扩展名和扩展名的CLSID或其他东西添加一些文件扩展名的密钥吗?
windows-shell ×10
c++ ×4
windows ×4
winapi ×3
c# ×2
com ×2
batch-file ×1
delphi ×1
delphi-2010 ×1
exception ×1
explorer ×1
favorites ×1
hotkeys ×1
registry ×1
shell ×1
shellexecute ×1
win32ole ×1
windows-7 ×1