我不能使用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(文件名)以外的其他参数?换句话说,我可以将%*替换为参数字符串吗?