Эта статья рассказывает, как запрограммировать завершение программы nhsms автоматическим способом, то есть из скрипта или из bat файла, для различных вариантов запуска nhsms.
Введение
Самый простой вариант, к которому нередко прибегают, это taskkill. Несмотря на то, что убивание процесса через taskkill или диспетчер задач действительно приводит к тому, что приложение больше не работает, это не является рекомендованным безопасным способом!
Рекомендованный способ для завершения процесса основан на отправке соответствующего запроса программе, чтобы она корректно завершила выполняемые действия, закрыла файлы и т.д. Способ зависит от того, служба ли это или приложение для пользователя.
Эти способы подходят не только для nhsms, но и для других программ.
Как остановить из bat файла службу nhsmssvc
Для остановки службы в Windows есть готовые команды net stop
и sc stop
, поэтому любая из этих строк безопасно останавливает службу nhsms:
net stop nhsms
sc stop nhsms
Как завершить графическое приложение nhsms
Завершение приложения с графическим интерфейсом можно сделать через отправку приложению кода клавиши, приводящего к закрытию программы.
Необходимо точно знать, какая именно комбинация клавиш приводит к корректному завершению программы. Во многих случаях это ALT-F4, но не всегда. Для nhsms нажатие ALT-F4 сворачивает окно программы, но не закрывает его, а завершение можно сделать нажатием ALT-D для английского языка.
Скрипт на JScript активирует окно по его названию и посылает нажатие клавиш ALT-D в приложение (для приложения это выглядит, как будто их нажал пользователь):
var wsh_shell = WScript.CreateObject("WScript.Shell"); wsh_shell.AppActivate("nhsms"); wsh_shell.SendKeys("%d");
Скрипт на VBS делается аналогично:
set objShell = CreateObject("WScript.Shell") objShell.AppActivate "nhsms" objShell.SendKeys "%d"
Запуск из bat файла:
cscript //nologo close-nhsms.js
Начиная с nhsms v3.2.0, для завершения программы может быть использована комбинация клавиш Shift-F4, поэтому будет работать скрипт:
var wsh_shell = WScript.CreateObject("WScript.Shell"); wsh_shell.AppActivate("nhsms"); wsh_shell.SendKeys("+{F4}");
Следующее видео показывает, как работает этот скрипт:
Как завершить консольное приложение nhsmscl
Завершение консольного приложения также можно сделать через отправку приложению кода клавиши, приводящего к закрытию программы.
Для nhsmscl нажатие клавиши Q (начиная с nhsms v2.14) корректно завершает программу, поэтому скрипт на JScript будет посылать нажатие Q:
var wsh_shell = WScript.CreateObject("WScript.Shell"); wsh_shell.AppActivate("nhsms"); wsh_shell.SendKeys("q");
Для запуска из bat/cmd файла используется команда:
cscript //nologo close-nhsmscl.js
Следующее видео показывает, как работает этот bat файл:
Скачать файлы
Скачать скрипты и bat файлы из этой статьи можно по ссылке (Яндекс.Диск, 1 кБ).
Узнать больше
SendKeys Method на MSDN
Службы Windows и cmd
nhsms как служба Windows