Я не могу использовать ShellExecute (Ex), но я должен предоставить очень похожую функциональность.
Моя функция принимает строки "file" и "arguments".Из строки файла я извлекаю расширение (если доступно) и вызываю 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. Есть ли функция / API для Windows, которая будет форматировать эти «командные строки»?
Если нет, могу ли я зависеть от% *, являющегося последним тестом в открытой строке оболочки, и от того, что не используются никакие другие аргументы, кроме% 1 (имя файла)? Другими словами, я могу просто заменить% * на строку аргументов?