Страница 16 из 243
Добавлено: Вс мар 20, 2011 19:13
HA3APET
Loopback
ещё из наблюдений, вдруг поможет
Код: Выделить всё
ShellExec /T /W "Camper.exe" "" "%commander_path%\Camper\"
Camper убивается - значок остаётся
Код: Выделить всё
ShellExec /TT /W "Camper.exe" "" "%commander_path%\Camper\"
Camper завершается - значка нет
но если так
Код: Выделить всё
ShellExec /TT /W "AUTOFx.exe" "" "%commander_path%\autofx\"
ShellExec /T /W "Camper.exe" "" "%commander_path%\Camper\"
то Camper завершается (значок пропадает), как будто стоит /TT а не /T
Добавлено: Вс мар 20, 2011 22:54
Loopback
Попробовал перейти на связку AssocQueryString+CreateProcess, на первый взгляд работает нормально. Кстати, теперь не обязательно убивать дерево (что, впрочем, было очевидно с самого начала), достаточно использовать /T /W.
1.4.9.5 beta
Добавлено: Пн мар 21, 2011 10:42
HA3APET
Loopback
(
У меня плагин вообще ничего не запускает. Даже так
Код: Выделить всё
ShellExec "Camper.exe" "" "%commander_path%\Camper\"
Win7 x64 SP1
Добавлено: Пн мар 21, 2011 11:15
Loopback
HA3APET
Чудеса... Дома работает, сейчас пробую на работе - действительно, ничего. Ладно, будем разбираться.
Добавлено: Пн мар 21, 2011 14:11
Loopback
Ох, ну и намудрили же Майкрософт с AssocQueryString... Вроде документированная функция, а на разных системах работает как ей вздумается.
В общем, вроде поправил. Новую версию делать не стал, можно скачать по последней ссылке.
Добавлено: Пн мар 21, 2011 14:39
HA3APET
Loopback
Код: Выделить всё
ShellExec "Camper.exe" "" "%commander_path%\Camper\"
не запускается
но bat файлы запускаются
но с полным игнорированием команд [/SW_HIDE|/SW_SHOWNORMAL|/SW_MINIMIZE|/SW_MAXIMIZE]
Добавлено: Пн мар 21, 2011 15:11
Loopback
HA3APET писал(а):не запускается
А разве должен? Нужен же полный путь к файлу, или путь с переменными окружения. Запись
Код: Выделить всё
ShellExec "%commander_path%\Camper\Camper.exe" "" "%commander_path%\Camper"
должна работать.
HA3APET писал(а):но bat файлы запускаются
Может быть путь, где лежит reg.bat, есть в PATH? Только в этом случае будет работать такая форма запуска - имя файла без пути.
HA3APET писал(а):но с полным игнорированием команд
Да, это я упустил. Поправлю.
Добавлено: Пн мар 21, 2011 15:24
HA3APET
Loopback писал(а):А разве должен? Нужен же полный путь к файлу, или путь с переменными окружения
До этого работало) привык писать так
Код: Выделить всё
ShellExec "Camper.exe" "" "%commander_path%\Camper"
написал
Код: Выделить всё
ShellExec "%commander_path%\Camper\Camper.exe" "" "%commander_path%\Camper"
Запустилось! Да, теперь именно в такой форме.
Завершается всё исправно.
Добавлено: Пн мар 21, 2011 15:49
Loopback
HA3APET писал(а):До этого работало) привык писать так
Ну может какая-то особенность ShellExecute, который использовался раньше. Возможно, он пытается запустить файл из каталога, который задан в качестве рабочего.
Но вообще это не совсем корректная запись, поскольку путь (третий параметр) в данном случае - это именно рабочий каталог запускаемой программы, а отнюдь не путь, откуда должен запускаться файл. Такой вариант использования не подразумевался
В любом случае, пути предпочтительнее задавать явно или с переменными - так надежнее.
HA3APET писал(а):Запустилось! Да, теперь именно в такой форме.
Завершается всё исправно.
Хорошо, а то я уже отладочную версию начал делать.
Добавлено: Пн мар 21, 2011 15:53
HA3APET
Loopback
Осталось вернуть [/SW_HIDE|/SW_SHOWNORMAL|/SW_MINIMIZE|/SW_MAXIMIZE] и дело сделано

Добавлено: Пн мар 21, 2011 15:57
Loopback
HA3APET писал(а):Осталось вернуть [/SW_HIDE|/SW_SHOWNORMAL|/SW_MINIMIZE|/SW_MAXIMIZE] и дело сделано
Версию не меняю, обновил ссылку.
Добавлено: Пн мар 21, 2011 16:26
HA3APET
Loopback, всё отлично работает, всё как задумано! Спасибо за работу.
Добавлено: Пн мар 21, 2011 17:27
MVV
ShellExecute ищет запускаемую программу в надцати местах, в то время как CreateProcess просто запускает из текущей папки (которая в тотале вовсе не обязана совпадать с папками в панелях и может быть такой, какой её поставит для своих нужд тотал) или по полному пути, он даже системные приложения не запустит, если путь к папке System32 не указан. Поэтому при работе с CreateProcess необходимо указание полного пути к приложению.
Добавлено: Пн мар 21, 2011 18:15
Loopback
MVV
Есть подозрение, что на выходе ShellExecute использует тот же CreateProcess, только предварительно проделывает всякие поисковые операции - по реестру и не только.
На самом деле не так важно, какая функция скрывается внутри ShellExec, главное, чтобы команда работала как в документации. Наверно, стоит добавить туда указание, что первым параметром предполагается полный путь файла.
HA3APET писал(а):Ещё для ShellExec был бы полезен параметр - задержка запуска в секундах.
Так есть команда Sleep. Просто разместить вызовы в конце конфигурации с заданной задержкой.
Добавлено: Пн мар 21, 2011 18:29
HA3APET
Loopback
Да) я уже разобрался, что так можно, по-этому и удалил сообщение.