JScript и Windows Script Host не имеют этой функции, как и WMI.
Если вам подходит PowerShell, вы можете использовать свойство Process.MainWindowHandle
, которое вы упомянули:
(Get-Process notepad).MainWindowHandle
В противном случае вам нужно найти или написать утилиту (COM-объект, инструмент командной строки и т. Д.), Которая обеспечивала бы эту функциональность, и вызвать этот инструмент из вашего скрипта.
Редактировать: Так что вам нужно закрыть окно - это задача автоматизации пользовательского интерфейса.
Windows Script Host обеспечивает очень ограниченную функциональность автоматизации пользовательского интерфейса. Если вы знаете заголовок окна, вы можете попробовать использовать методы AppActivate
to и SendKeys
, чтобы активировать это окно и отправить Alt + F4 ярлык к нему. Вы можете найти пример этот ответ . (Код написан на VBScript, но он должен дать вам представление.) Однако этот подход ненадежен.
Если вы действительно не хотите убивать процесс, самое простое решение - использовать какой-либо сторонний инструмент автоматизации пользовательского интерфейса. Например, вы можете попробовать бесплатный инструмент AutoIt - я думаю, что он сможет выполнить то, что вам нужно.
Редактировать 2: Вы пытались записать закрытие окна? Вы должны получить такой скрипт:
Sys.Process("notepad").Window("Notepad", "Untitled - Notepad").Close();
Разве это не то, что вам нужно?