![]() |
CMD/BAT - [решено] Скрипт для авто выключения одного приложения при ручном выключении
Однажды я уже задавал подобный вопрос, но нужного ответа тогда я так и не получил. Так что это моя вторая попытка.
Есть некая игра, назовем её MTA Province. И приложение для записи видео с экрана - Bandicam. Нужно создать скрипт, при запуске которого сначала должна запускаться игра, а потом через секунд 5 - приложение для записи видео. Приложение нужно просто запустить, авто запись в нём включается сама. Но это ещё не весь скрипт. Нужно что б скрипт всё ещё оставался активен и всё время отслеживал (желательно в свёрнутом виде), запущена ли игра или нет. И в случает выключения игры, скрипт должен так же выключить и программу для записи видео. Ну и сам скрипт после этого со спокойной душей тоже должен закрыться. Думаю цель ясна. Запускаю игру - начинается запись видео. Выключаю игру - запись прекращается. НО. Приложение для запуска игры, запускает иной процесс, и к тому же не один (Смотреть вложение). Да и Bandicam, запускается одним приложением, но запускает другой процесс (Смотреть второе вложение). И вот я не соображаю как написать этот скрипт. Надеюсь на понимает, и помощь от знающих людей. Информации НА ЭТОТ РАЗ я надеюсь дал достаточно... |
Покажите то же самое, только скриншотами Process Explorer'а. Уточните, какие именно исполняемые файлы Вы запускаете для игры и для записи видео. Запишите видео, на котором покажите, как Вы делаете описанные выше действия вручную.
|
Записать видео процесса запуска записи видео. Хм... Думаю тут нужна вторая прога для записи видео. Сейчас что-то соображу...
|
А скриншот вот
|
Покажите свойства того, чем Вы запускаете процессы «Multi Theft Auto.exe» и «bdcam.exe» (например, свойства ярлыков). Конкретно интересуют полный путь к исполняемому файлу, рабочий каталог, требуется ли запуск с административными привилегиями, передаваемые параметры и т.п.
|
Исполняемые файлы:
"D:\Games\MTA Province\MTA\Multi Theft Auto.exe" "C:\Program Files (x86)\Bandicam\Loader.exe" В свойствах ярлыков галочка "Запуск от имени администратора" нигде не стоит. Видео |
vk_k14m@vk, за мельтешением картинок на Вашем Рабочем столе ничего разглядеть невозможно, ни где Вы возите мышкой, ни где что нажимаете. И большой баннер над панелью задач этому тоже не помогает.
Можете пробовать. На WSH: Скрытый текст
Код:
Option Explicit Запускаете скрипт, ждёте запуска игры, ждёте пять секунд, нажимаете F12 (или иную горячую клавишу, какая там у Вас настроена) для начала записи видео. Закончили — нажали F12 для остановки записи видео, затем только закрыли игру. |
Цитата:
|
Цитата:
Никакие дополнительные действия вроде перекодирования, остановки и сохранения записи не нужны. Если принудительно закрыть программу видео так же не повредится. Цитата:
![]() И еще вопрос на будущее. Если я захочу сделать подобный скрипт, но для какой-то другой игры. Мне просто изменить путь в этой строчке Код:
Const strPath2GameProcess = "D:\Games\MTA Province\MTA\Multi Theft Auto.exe" |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
![]() Цитата:
|
Скрипт по какой-то причине не может запустить на исполнение файл "C:\Program Files (x86)\Bandicam\Loader.exe" :).
|
Цитата:
|
Цитата:
|
Такс. С запуском сейчас все в порядке. А вот с завершением процесса проблемы. После выключения игры ни "bdcam64.bin", ни "bdcam.exe" не завершается. К тому же, если вручную завершить процесс "bdcam64.bin" то запись не прекращается, и идет дальше. Нужно именно "bdcam.exe" выключать. Заменил в скрипте "bdcam64.bin" на "bdcam.exe", и ничего не изменилось. Скрипт не может, или не хочет завершать этот процесс. Да и процесс самого скрипта не завершается. И если много раз его запускать, то он дублируется.
|
vk_k14m@vk, я уже написал Вам, что нужно сделать:
Цитата:
Цитата:
Скрытый текст
![]() Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
![]() |
vk_k14m@vk, «огласите весь список, пожалуйста»™.
|
Цитата:
|
vk_k14m@vk, как-то странно у Вас некоторые вещи выглядят.
А так особо идей нет. Могу лишь констатировать, что у меня всё работает, как было заказано (за исключением того факта, что, если делать захват видео на полном экране, и Bandicam принудительно снимать, то файл видео оказывается запоротым). |
Цитата:
|
добавить еще суперпиратский Bandicam и можно не удивляться почему его ничем не убить в этой системе.
|
Цитата:
|
Цитата:
Скрытый текст
![]() Отдельный процесс Проводника (7232), из которого ярлыком запускается наш скрипт WSH (5420). Скрипт посредством Wbem обращается к службе провайдера WMI (9304), которая и организует запуск процесса Multi Theft Auto.exe (в роли которого выступает переименованный исполняемый файл Блокнота, 7360), а затем, спустя пять секунд, процесса bdcam.exe (8564; в предоставленном Вам варианте скрипта — будет загрузчик Loader.exe, который сам запускает bdcam.exe), каковой из-под себя запускает процесс bdcam64.bin (6760). Вот так у меня это выглядит в момент, когда «всё запущено». Когда мы «ручками» закрываем Multi Theft Auto.exe, скрипт реагирует на завершение этого процесса, ищет по имени и закрывает процесс bdcam64.bin, напрямую обращается к родительскому процессу bdcam64.bin'а по ProcessID — процессу bdcam.exe и закрывает и его. После этого скрипт завершает свою работу. Цитата:
|
Пришлось ставить Portable версию приложения. Получилось частично повторить твой скриншот.
Цитата:
Скрытый текст
![]() После закрытия игры бандикам продолжает работать дальше. Видимо этот wscript.exe просто не умеет работать с приложениями, которые запускаются не напрямую, а через лоадер... Может есть более просто способ провернуть тоже самое? |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
![]() тогда что (скриншот, опять-таки предоставленный Вами)? Цитата:
|
Цитата:
Скрытый текст
![]() Эти приложения запущены разными способами. Ты же писал: Цитата:
Скрытый текст
![]() А раз уж игра висит отдельно, я сделал вывод, что скрипт не отлавливает момент ее закрытия, а по этому и Бандикам не закрывает. Я не прав? Если прав то я все правильно написал Цитата:
|
Время: 00:37. |
Время: 00:37.
© OSzone.net 2001-