Эта статья рассказывает, как запрограммировать завершение программы 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

Способы завершения приложения или службы nhsms
Метки:            

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *