Закройте приложение, используя VBScript
Я пытался открыть и закрыть приложение. Я пытался так:
Dim App1
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit
Firefox откроется, но не закроется.
Сообщение об ошибке:
объект не поддерживает это свойство или метод
Я упомянул InDesign Scripting, как выйти из приложения (не документа)
Подскажите пожалуйста процедуру закрытия приложения.
5 ответов
Если вы хотите иметь возможность завершить процесс таким образом, вам нужно использовать Exec
метод вместо Run
метод.
Set ff = CreateObject("WScript.Shell").Exec("firefox")
'you do stuff
ff.Terminate
Я заметил несколько способов:
taskkill
- Сработало только если я попытаюсь убить тот же процесс, что и при запуске.Dim oShell : Set oShell = CreateObject("WScript.Shell") oShell.Run """C:\My_Scripts\ddl.exe"" -p1 -c" 'some code oShell.Run "taskkill /f /im ddl.exe", , True
SendKeys
- Работает для всех приложений, если имя окна известно.Dim oShell : Set oShell = CreateObject("WScript.Shell") filename = "C:\Some_file.txt - Notepad" act = oShell.AppActivate(fileName) oShell.SendKeys "% C"
Объект WMI - 2 способа работают хорошо для меня, поэтому я не пробовал. Вы можете найти пример здесь:
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'Chrome.exe'") Set oShell = CreateObject("WScript.Shell") For Each objProcess in colProcessList oShell.Run "taskkill /im chrome.exe", , True Next
Вот альтернативная реализация VBScript:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
Firefox не является COM-объектом. COM-объект Firefox отсутствует. Firefox не хочет, чтобы вы использовали COM. Или НЕТ. Или Microsoft. Вот почему вы не можете создать объект Firefox, поэтому вместо этого вы создали объект WScript.Shell.
В WScript.Shell нет метода выхода. Если это так, это не поможет убить Firefox.
Это пример использования WMI из VBS для запуска, а затем завершения такого процесса, как Firefox.
Хорошая работа для этого примера:
Dim oShell : Set oShell = CreateObject("WScript.Shell")
oShell.Run """C:\My_Scripts\ddl.exe"" -p1 -c"
'some code
oShell.Run "taskkill /f /im ddl.exe", , True