c++ - 如何格式化 Registry->Shell->Open->Command(从 AssocQueryString 输出)
问题描述
我不能使用 ShellExecute(Ex) 但我必须提供非常相似的功能。
我的函数接受“文件”和“参数”字符串。从文件字符串中,我提取一个扩展名(如果可用)并调用 AssocQueryStringW。具体来说:
rc = AssocQueryStringW(URL_SCHEME_FILE | ASSOCF_NOTRUNCATE,
ASSOCSTR_COMMAND,
extension,
verb,
execStr,
&execStrSize);
(动词 == “打开”)。如果已注册扩展,这将返回与注册表项关联的数据字符串:HKEY_CLASSES_ROOT/\Shell\Open\Command。我想我可以使用 FormatMessage 来格式化返回的字符串和我的参数。不幸的是,有些条目包含 (%*)。IE.AssocFile.WEBSITE 包含一个 %l(是的小写 L,而不是一 (1)。我将此信息传递给 CreateProcessAsUser。是否有 Windows 函数/API 可以格式化这些“命令行”?
如果不是,我可以依赖 %* 作为 shell 打开字符串中的最后一个测试,并且除了 %1 (文件名)之外没有其他参数被使用?换句话说,我可以用我的参数字符串替换 %* 吗?
解决方案
推荐阅读
- python - 将 Pandas 数据帧转换为 PyTorch 张量?
- c++ - 如何在 C++ 中生成一个从 0 到 N 的 size_t 包,其中 N 在编译时已知
- java - Java JTable 无法加载
- java - 如何(反)序列化棋盘游戏中改变游戏规则的卡片行为?
- sql - xQuery 函数返回值未显示
- angularjs - Bower 错误:无法加载资源:net::ERR_FILE_NOT_FOUND
- python - 在列表理解中使用具有多个参数的基于 len() 的条件的大多数 Pythonic 方式
- java - 带有最小 jar 的 Tomcat
- javascript - 如何将此表从最大到最小排序?
- gcc - 什么是 GCC 工具链?