Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Завершение программы из командной строки (http://forum.oszone.net/showthread.php?t=151267)

Severny 23-09-2009 14:00 1225515

Завершение программы из командной строки
 
Здравствуйте.
Нужно из батника завершать программу.
tskill <название процесса> работает, но не завершает корректно программу.
Т.е. сама программа при обычном завершении формирует лог, а при убийстве процесса этого не делает.
Спасибо.

Petya V4sechkin 23-09-2009 14:31 1225553

Severny, вместо tskill taskkill, причем без опции /F
Код:

taskkill /IM notepad.exe

Severny 23-09-2009 15:37 1225640

Petya V4sechkin,
Спасибо. Блокнот завершается отлично.
Мое приложение нет (
Подсказали скрипт, что-то мне не удается связать (
Цитата:

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "ics.exe"
WScript.Sleep 1000
WshShell.SendKeys "q"
WScript.Sleep 1000
WshShell.SendKeys "~"

Petya V4sechkin 23-09-2009 15:50 1225655

Severny, как-то так:
Код:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Internet Casino Cash"
WshShell.SendKeys "%{F4}"


Severny 23-09-2009 15:57 1225665

Petya V4sechkin,
Ну я же знал, что найду ответ на ЭТОМ форуме )

Severny 23-09-2009 16:58 1225718

Один момент.
Если вдруг программа закрыта, то выскакивает окошко завершения работы (ну Alt+F4).
Нельзя ли какой-то параметр if, чтобы Alt-F4 не выполнялся, если не обнаруживается работающая программа.

Petya V4sechkin 23-09-2009 17:03 1225722

Код:

Set WshShell = WScript.CreateObject("WScript.Shell")
If WshShell.AppActivate("Internet Casino Cash") Then
  WshShell.SendKeys "%{F4}"
End If


Severny 23-09-2009 17:14 1225729

Дело мастера боится

megaloman 23-09-2009 21:30 1225985

Вот скрипт, который убивает процесс. Он не связан с посылкой в буфер никаких имитаций нажатия клавиш. Если запущено несколько одинаковых процессов, убивает все. Для примера взял far.exe, который переспрашивает, надо ли завершать программу или нет. Скрипт убивает его без вопросов. Хоть десять штук за раз.
Код:

WhatKill = "Far.exe"    ' Что хотим убить. Если запущено несколько экземпляров, убьём всё

Set WMI = GetObject("winMgmts:")
iSQL = "Select * From Win32_Process Where Name=""" + WhatKill + """"
Set Proc = WMI.ExecQuery(iSQL)

For Each iProc In Proc
    iProc.Terminate
Next


Severny 23-09-2009 21:32 1225988

Спасибо, но..
убить я и tskill могу, а надо завершить. При убийстве процесса программа не делает нужного лога, который она делает при завершении.

megaloman 23-09-2009 22:52 1226047

Извините, я невнимательно вчитался в проблему :tomato2:

FragMaster 12-04-2013 09:40 2130844

Приведенные в теме скрипты срабатывают (по крайней мере у меня) только тогда, когда Аутлук НЕ свернут в трей (где часы).
Можно ли как-ньть изменить данный скрипт, чтобы он закрывал Аутлук, свернутый в трей?

Такой скрипт тоже срабатывают только когда АутЛук НЕ свернут в трей:
Set objWord = CreateObject("Word.Application")
Set colTasks = objWord.Tasks

'нужно знать название окна
If colTasks.Exists("Outlook") Then
colTasks("Outlook").Close
End If

objWord.Quit

PS: WIn 7x64 sp1 Outlook 2010

Iska 12-04-2013 13:20 2130990

FragMaster, для Microsoft Outlook есть правильный способ:
Код:

On Error Resume Next
GetObject(, "Outlook.Application").Quit

Сработает ли для «Microsoft Outlook 2010» — не знаю, проверьте и отпишитесь.

Iska 21-04-2013 20:50 2137215

Georgio, Вы на дату процитированного Вами поста обратили внимание?


Время: 17:38.

Время: 17:38.
© OSzone.net 2001-