Как использовать ShellExecute (ShellExecuteEx), чтобы открыть файл-документ в ассоциированной программе или использовать AssocQueryString, чтобы получить путь к программе и далее использовать его с путём файла? Или FindExecutable, ведь у нас пути существующие.
Кажется нашёл
И как результат
И тут проблема, для запуска прог требующих админ-права команда запуска не выполняется, хотя ожидается запуск с подтверждением запуска от админа, но не происходит ничего. Запускаю AkelPad от админа и всё работает.
Итак новая версия с использованием ShellExecuteEx. Взял отсюда, там не совсем нужное - для свойств файла, но я переделал под запуск файла, теперь работают и reg и bat без всяких ухищрений. Возможно так как я удалил поле lpVerb в структуре, то размер её должен быть уменьшен, но по крайней мере вреда от этого нет.
Используя "lpVerb" мы можем указать пункт в реестре, например edit (Изменить) вместо open (Открыть)
Кстати, это можно сделать через меню вкладки -> Меню проводника.
Как запустить документ в ассоциированной программе?
- Author
- Message
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Всё проще гораздо.
Настройки -> Общие -> Выполнить -> в поле "Команда" вбиваем:а в поле "Каталог":
и файлы начинают открываться в ассоциированной программе по Ctrl+F5.
Вероятно Вы не читали Дополнения к FAQ.
Настройки -> Общие -> Выполнить -> в поле "Команда" вбиваем:
Code: Select all
rundll32.exe shell32,ShellExec_RunDLL "%f"
Code: Select all
%d
Вероятно Вы не читали Дополнения к FAQ.
-
Offline
- Posts: 348
- Joined: Mon Jun 03, 2019 2:33 am
Улучшение: так как при запуске js-файлов тупо запускалось внешней прогой с напоминанием об ошибке и бессмысленностью выполнения, теперь это работает как запуск в контексте запуска js-скриптов внутри AkelPad, то есть фактически происходит тест редактируемого в данный момент скрипта, без поиска в меню "Запуск последнего" и без открытия списка всех ваших скриптов в GUI и поиска его имени там, просто выбрал вкладку нажал F5. По умолчанию F5 - переоткрыть файл, но лично я ни разу не пользовался этим пунктом за многие года использования Notepad++, во первых при внешнем изменении он сам переоткрывается, а внутри жмёшь отмена действий, поэтому F5 у меня всегда был запуск файла в ассоциированной программе. Чтобы этот скрипт не запускал сам себя в цикле (миллиард раз пока включен комп мучая проц и hdd) добавил игнор на его имя.