![]() |
Скрипт, проверяющий программу и предлагающий ее запустить если она вырубилась
Всем привет
исходные данные: на компе должна работать программа c:programm files/proga.exe периодически она вылетает и ее приходится запускать руками пояснение - прога на удаленном компе и там нет мышки клавиатуры (там тач пад можно пальцем в экран ткнуть), чтобы пользователь смог зам ее запустить (мышкой и клавиатурой прогу запустить можно только из диспетчера задач). Приходится подключаться по тимке и включать им ее. надо: скрипт, который будет, к примеру, каждые 10 минут проверять наличие процесса proga.exe и если такой процесс не обнаружен, выводить окно на экран с предложением запустить программу Да/Нет соответственно при нажатии на Да - запускается proga.exe а при нажатии на Нет скрипт уходит в свой обычный режим и через 10 минут снова предложит запустить прогу. И еще этот скрипт должен выключать процесс експлорера (при вылете программы этой остается окно "Мой компьютер" Код:
Option Explicit |
|
Цитата:
|
koresaram, создайте примерно такую задачу на каждые 10 минут:
Код:
cmd.exe /c "tasklist | findstr /B notepad.exe || "c:\Windows\notepad.exe"" тачпад - это сенсорный квадратик на ноутбуках под клавиатурой, а "пальцем в экран" - это тачскин |
Цитата:
wait-process будет ожидать завершения процесса, а по завершении можно прикрутить действие на запуск формы с кнопками... в общем, варианты есть, но если требуется именно wsh... |
Цитата:
Цитата:
|
Цитата:
Я понимаю так: скрипт проверяет наличие исполняемого файла приложения. Скрипт запускает приложение. Скрипт следит за тем, что приложение работает (причём — именно за тем экземпляром приложения, который был запущен самим скриптом, игнорируя любые прочие экземпляры того же приложения). Как только данный экземпляр приложения завершается — скрипт немедленно запускает новый экземпляр и начинает следить за ним. |
Цитата:
То есть скрипт чекает наличие процесса proga.exe если процесс есть - значит прога работает и делать ничего не надо (следующий чек через 10 минут). Если процесса нет -выводится интерактивное окно - Включить кассу? Да/Нет. Возникает вопрос а зачем тогда Нет? Бывают случаи, когда программу надо принудительно выключить (например обновляется бд, а при включенной проге обращение к бд не дает скопировать файлы). вот для этого случая нужен вариант Нет. |
Цитата:
|
кассы в магазинах - это легко может быть какой-нибудь Embedded XP
|
koresaram, мне не нравится Ваш подход в принципе. Предлагаю свой:
Скрытый текст
Код:
Option Explicit Будут вопросы по коду — задавайте. |
Цитата:
Цитата:
|
Цитата:
Цитата:
но указанный в теме код (вбскрипт) работает на всех. что такое пауершелл я хз ) |
Что-то идет не так )
https://clip2net.com/s/3WklZYF картинка ссылка на климптунет я скопировал код, сохранил его как frontolstart.vbs закачал на кассу и вырубил фронтол. exe (пусть к программе в скрипте поменял с vlc на frontol). Прошло 15 минут - ничего не происходит. Как узнать "подходит ли скрипт под ту среду, которая стоит на кассе"? я не программист, поэтому, надеюсь, понятно, что я хотел сказать ) |
Цитата:
PowerShell — Википедия. Цитата:
|
Цитата:
сейчас в настройках самой программы фронтол (это и есть кассовая программа) есть 2 варианта - ос (винда) и фронтол (вместо ос). Туда впихнуть наш вбс не получится я так понимаю. Собственно поэтому я излагал свой вариант - скрипт, чекающий наличие фронтол.екзе и, при его остуствии (вылетел фронтол), предлагающий его запустить . |
Цитата:
Цитата:
Цитата:
«ос (винда)» — просто подменяете ярлык на запуск фронтол ярлыком на запуск скрипта. Если ярлык в Автозагрузке — подменяете там. Если путь в автозапуске реестра — подменяете в реестре. «фронтол (вместо ос)» — открываем оснастку групповой политики, задаём в качестве оболочки пользовательского интерфейса (Custom user interface) наш скрипт в виде: Код:
"c:\Windows\System32\wscript.exe" "C:\Мои проекты\0190\0001.vbs" Скрытый текст
![]() ![]() и пользуемся. Естественно, желательно будет добавить код для выхода из системы (или завершения работы системы) при завершении работы скрипта, дабы люди не терялись при пустом экране. Есть домен — ещё проще, всё делаем в одном месте, есть разделение по OU, фильтрация, предпочтения групповой политики и т.п., назначаем только тем, кому надо. Если домена нет, но ОС от Vista и выше — используем множественную групповую политику (Использование множественной локальной групповой политики), не гребя под одну планку пользователей и администраторов машины. В крайнем случае тупо подгружаем куст реестра потребного пользователя, импортируем туда файл реестра с данной политикой, выгружаем куст реестра. |
Iska,
тут блин фиг знает как реализовано ( в настройках этого фронтола есть галочка )) "Запускать фронтол вместо ОС" - и все. То есть по идее смотреть реестр на автозагрузку надо. Но. Фишка в чем. Наши "сисадмины" говорят, что подумают как это реализовать ). Думают они уже месяц ) Вот тот код, который я в теме приводил, (мне его подруга написала минут за 5) - если на него сделать ярлык и запихать в "С-Пользователи-Ссылки" - то появляется ярлык вместо избранных ссылок в "Мой компьютер". На него можно нажать и все срабатывает. При этом этот скрипт (приведенный в теме) сисадмины раскидать смогли на все машины, а вот ярлык на этот вбс раскидать на все компы в "С-Пользователи-Ссылки" почему-то нет. Хотя по идее это такой же файл. Собственно отсюда и "появилась" у меня идея сделать такой скрипт, который сам будет "чекать" на предмет запущенности нужной программы и в зависимости от наличия или отсутствия - выводить окно с возможностью запуска программы. |
Цитата:
Цитата:
Домен у Вас есть? |
домена наверное нет (это большая локалка. То есть есть айпишники каждой кассы (где-то) :)
сам скрипт раскидан. на всех кассах он есть. но конкретно ярлык на каждую кассу почему-то не получилось у них ( хотя никаких прав доступа и прочих заморочек там нет (руками я могу зайти в любую кассу - сделать ярлык на этот скрипт и копирнуть его в С/Пользователи/Ссылки и пользователь его начинает видеть и может нажимать. P>S> если я делаю ярлык на скрипт и копирую его (к примеру) себе на свой комп, то путь к ярлыку меняется на тот,где я положил у себя на компе файл. Может так проще будет - как в ярлыке задать абсолютный путь чтобы ярлык всегда ссылался на D://files/frontol.vbs ? Вне зависимости от того, где лежит сам файл frontol.vbs |
Цитата:
Цитата:
Я бы сделал проще — добавил путь типа: Код:
"c:\Windows\System32\wscript.exe" "C:\Мои проекты\0190\0001.vbs" |
Цитата:
Цитата:
script.ps1 Код:
add-type -assembly system.windows.forms run.bat Код:
@echo off script.ps1
Код:
add-type -assembly system.windows.forms |
опаньки! еще нюанс вариант появился
а как добавить вызов этого скрипта в другой скрипт на вбс, который стоит в планировщике? на кассах в планировщике есть скрипт 1.vbs который выполняется раз в минуту. Туда в него же можно включить запуск нашего скрипта? |
Цитата:
Цитата:
Код:
$res = [Windows.Forms.MessageBox]::Show($process, "Запускаем файл?", $btn, [Windows.Forms.MessageBoxIcon]::Question, [Windows.Forms.MessageBoxDefaultButton]::Button1, [Windows.Forms.MessageBoxOptions]::ServiceNotification) Самым правильным, конечно, было бы использование перегрузки метода с использованием первым параметром следующего: Цитата:
Цитата:
|
Цитата:
Дык, это ведь не powershell виноват в том, что консоль far-а имеет свое, особое мнение и батники с powershell-ом запускает прямо в ней... хотя, так работает любая консоль, такшта и фар тут тоже, особо не виноват... :) Но, всё же, это правильно, имхо, т.к. целью, как раз, было скрыть консоль, чтобы глаза не мозолила. Ну и в крайнем случае, можно ведь powershell в отдельном окне запускать, через start... Цитата:
Оказывается есть вариант... я-то потыкал гугль, но на глаза не попалось ничего аналогичного, а усиленно рыть не стал. |
Цитата:
|
Цитата:
И там же есть запуск скрытых консолей powershell и он там именно через батник с командами start "", так что вполне себе вариант, т.к. консоль из которой происходит запуск, остается нетронутой. И на всякий случай, там же, есть скрипт прибития скрытых консолей: Код:
$p = get-wmiobject win32_process -filter "name='powershell.exe'"|%{if($_.commandline -match 'hid'){$_.processid}} |
Какой ужас.
Извините за оффтоп, но не пытались ли разобраться с тем, почему вообще программа вылетает? Зачем вообще нужно это взаимодействие с пользователем и запуск руками чего бы то ни было, если нужно, чтобы программа всегда работала? |
Время: 17:02. |
Время: 17:02.
© OSzone.net 2001-