powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Закрыть всплывающее окно из командной строки
25 сообщений из 41, страница 1 из 2
Закрыть всплывающее окно из командной строки
    #33890905
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: закрыть всплывающее окно в Windows 2000/2003 (окошко в котором кнопка OK и все) при его появлении.

Я так понимаю по eventtrigger (а в журнале событий появляется сообщение о всплывающем окне PopUp с ID 26) по событию в журнале запустить батник, в котором будет производиться закрытие этого окошка.

Загвоздка в том, что при нажатии OK на первом окошке обязательно возникает следующее, в котором также в свою очередь надо нажать OK и после этого перезапустить определенную службу (пока не нажмешь на Ok закрыв всплывшие окна службу перезапустить не удается)

Как это реализовать ?
Поможет ли закрыть эти окна команда kill (taskkill) ?
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33891003
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать из WSH SendKeys
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33891120
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--можно попробовать из WSH SendKeys

а можно поподробнее как это и чем ?
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33891148
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой WSH

делаем файлик с close.vbs

имя окна указываем как у этой заразы - он не нее переведет фокус и нажмет Enter - должно закрыться.
Если окон несколько - вставьте дальше код аналогично.

Код: plaintext
1.
2.
3.
4.
5.
Set sh=WScript.CreateObject("WScript.Shell")
str="имя окна"
sh.appactivate str
WScript.sleep  1000 
sh.sendkeys "{ENTER}"

запускаем cscript close.vbs
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33891972
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--есть такой WSH

делаем файлик с close.vbs

имя окна указываем как у этой заразы - он не нее переведет фокус и нажмет Enter - должно закрыться.
Если окон несколько - вставьте дальше код аналогично.

Код: plaintext
1.
2.
3.
4.
5.
Set sh=WScript.CreateObject("WScript.Shell")
str="имя окна"
sh.appactivate str
WScript.sleep  1000 
sh.sendkeys "{ENTER}"

запускаем cscript close.vbs

А для работы этого скрипта, необходимо ли что то устанавливать (VisualBasic,...) или прям в Win2000/2003 будет работать ?

Потому как все это дело надо организовать на сервере и не хотелось бы туда устанавливать дополнительный софт/приложения/...
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33892188
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WSH есть начиная с 98 Windows.
Метод SendKeys вроде тоже везде работает.
Просто нужно чтобы был установлен сервер сценариев (по умолчанию он устанавливается начиная с W2k точно).
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33892675
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все вроде понятно что делает
А что означает строка ?
"WScript.sleep 1000"

Просто дает время на то чтобы окно стало активным ?
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33892724
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G> А что означает строка ?
G> "WScript.sleep 1000"

Означает "подождать одну секунду"
(тыщу миллисекунд)

PS наверно, скрипт изначально был с циклом, который выкинули :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33893766
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle

PS наверно, скрипт изначально был с циклом, который выкинули :)

Posted via ActualForum NNTP Server 1.3


А можно в этот скрипт вписать выполнение какой-либо Виндовой команды с параметрами (запускной *.exe сопределенными параметрами), если да то как именно это пишется ?
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33893804
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklePS наверно, скрипт изначально был с циклом, который выкинули :)


это действительно фрагмент.
Но дело не в цикле - просто привычка
фишка в том, что стандартный прием - сделать run приложению - а потом его активировать и делать sendkeys.
И все руководства по WSH рекомендуют между вызовом проги и попыткой ей управлять сделать паузу - видимо, чтобы гарантированно прога успела запуститься и создать окно.
Возможно, в случае автора не надо делать sleep - но не помешает подстраховаться, в конце концов что такое одна секунда :-)

авторА можно в этот скрипт вписать выполнение какой-либо Виндовой команды с параметрами (запускной *.exe сопределенными параметрами), если да то как именно это пишется ?

конечно можно

sh.run "имя_программы"
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33893813
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и в циклах или при последовательной подаче команд конечно тоже паузы надо делать, чтобы интерфейс успевал за WSH-ем. А то может получиться много трагикомических ситуаций :-)
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33893883
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n> фишка в том, что стандартный прием - сделать run приложению - а потом
n> его активировать и делать sendkeys. И все руководства по WSH рекомендуют
n> между вызовом проги и попыткой ей управлять сделать паузу - видимо,
n> чтобы гарантированно прога успела запуститься и создать окно.

Ага, если это внешняя по отношению к WSH прога.
Но вот насчет паузы... Не всякое же приложение за секунду стартанет,
особенно, если комп медленный. Уж лучше проверять готовность + еще добавить
с полсекунды...
ИМХО.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33894271
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle совершенно с Вами согласен. Это всего лишь пример и исходить надо из опыта на конкретной машине и приложении. А в особо ответственных случаях можно даже и 10-секундные паузы делать - гораздо спокойнее.
При активации можно делать и более сложные вещи - скажем, цикл с маленькими sleep-ами, который повторять, пока приложение не активизируется (apppactivate, насколько я помню, при неудаче возвращает 0)
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33895028
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--... А в особо ответственных случаях можно даже и 10-секундные паузы делать - гораздо спокойнее.
При активации можно делать и более сложные вещи - скажем, цикл с маленькими sleep-ами, который повторять, пока приложение не активизируется (apppactivate, насколько я помню, при неудаче возвращает 0)

А не рассматриваете такой ситуации, что пока вы активировали окно и сделали паузу, может запуститься какой то иной процесс (новое окно всплыть, через шедулер что то запуститься) и в итоге активным стало иное окно и вы уже в ем senkey делаете - нехорошо получиться !!!

Так что вопрос с паузой неоднозначен !!!

В моем случае видимо не надо паузы т.к. полностью задача выглядит так.

Некая служба сбоит, при этом выводит окно с сообщением, в котором только кнопку OK нажать можно (других просто нет), нажимая OK тут же возникает второе окно, все от той же службы (просто с несколько иным сообщением), и нажимая в ней OK необходимо сделать перезапуск службы.

Вывод этих окон фиксируется в журнале событий.
Автоматизаия:
1. прописать trigger который по определенному событию в журнале будет запускать то что пропишем - пропишем как раз этот скрипт для запуска
2. скрипт активирует окно (на всякий случай) и посылает в нем нажатие enter.
3. скрипт продолжает выполняться и активирует новое (возникшее окно) и так же посылает в него нажатие Enter.
4. Выполняет команду перезапуска службы

В итоге паузу нужно поставить разве что в скрипте между выполнением 3. и 4. пунктов.
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33895049
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, вообще-то логичнее по дескриптору процесса делать рестарт. А в упрощенной постановке - может, nnCron поставите? - он умеет жать на кнопки в заданных окнах :)
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33895069
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА не рассматриваете такой ситуации, что пока вы активировали окно и сделали паузу, может запуститься какой то иной процесс (новое окно всплыть, через шедулер что то запуститься) и в итоге активным стало иное окно и вы уже в ем senkey делаете - нехорошо получиться !!!

рассматриваю :-(
Это, к сожалению, недостаток таких роботов для работы с GUI
выход - чтобы уж ничего не всплывало. Ибо мальенькая пауза лишь уменьшает вероятность такого глюка - но никак ее не исключает.
Соответсвенно, эти штуки надо запускать на выделенных станциях, за которыми не работают юзеры. Бывают проги, которыми извне управлять можно только GUI - а автоматизировать ну очень хочется (много монотоных действий).

в Вашем случае действительно можно забить на паузу.
Так как очевидно в момент срабатывания триггера окно уже будет присутствовать.
Думаю, после некоей отладки все будет OK!
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33895081
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, да - у rrrrrrrrrr более надежный вариант.
Знать ID процесса, по триггеру его убить (и окно исчезнет) - а потом сделать restart.
Не будет мороки с GUI и к тому же все это будет работать и при лоченном сервере (в этой ситуации wsh sendkeys не поможет, кстати)
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896232
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rrrrrrrrrrХм, вообще-то логичнее по дескриптору процесса делать рестарт. А в упрощенной постановке - может, nnCron поставите? - он умеет жать на кнопки в заданных окнах :)

Пробовал конечно так сначала.
Беда в том что никак не останавливается/рестартуется/.... процесс, пока не нажаты (закрыты) окна всплывающие.
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896246
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--[quot автор]...
в Вашем случае действительно можно забить на паузу.
Так как очевидно в момент срабатывания триггера окно уже будет присутствовать.
Думаю, после некоей отладки все будет OK!


Испробовал пока без триггера - просто ручками запустил *.vbs когда появилось первое всплывшее окно (внутри vbs прописал закрытие обоих окон последовательно с паузой в 1 секунду между закрытиями окон) - все отлично сработало.

Осталось триггер забацать и в скрипт добавить запуск службы.

А можно как то добавить в скрипт послать сообщение по PoP3 нзаданный адрес ? (чтобы как то оповещать о происходящих сбоях)
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896293
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно можно. Наверное все же отправить по SMTP, а не по POP3.
Например, можно породить объект Аутглюка


Код: plaintext
1.
2.
3.
4.
5.
6.
Set outlook=WScript.CreateObject("Outlook.Application")
set item=outlook.createItem( 0 )
item.Recipients.Add "guset@guset.ru"
item.Subject="Test mail from WSH"
item.Body="Событие произошло!"
item.Send

Надо что был настроен аутлук, конечно.
иначе - можно использовать какой-нибудь SMTP сендер - тот же blat или еще что-то такое, которое запускать как внешнюю прогу.
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896411
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще скриптик отправки почты, по образцу от мелкософта. На компе должен
работать SMTP-клиент

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "test@test.com"
objEmail.To = "user@domain.ru"
objEmail.Subject = "PopUp message"
objEmail.Textbody = "PopUp message is closed."
objEmail.Send

Есть там еще скриптик, чуток посложней, но SMTP-клиент не обязателен

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896497
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЕсть там еще скриптик, чуток посложней, но SMTP-клиент не обязателен

Если есть - выложите плиз для коллекции.
Многим поможет, полезно.
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896532
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n> Автор: --null--
n> vkle
n> Есть там еще скриптик, чуток посложней, но SMTP-клиент не обязателен


n> Если есть - выложите плиз для коллекции.
n> Многим поможет, полезно.

Собственно, вот на этой страничке оба скрипта
http://www.microsoft.com/technet/scriptcenter/resources/qanda/nov04/hey1129.mspx

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33896964
Guset
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle

Собственно, вот на этой страничке оба скрипта
http://www.microsoft.com/technet/scriptcenter/resources/qanda/nov04/hey1129.mspx


на этой странице скрипты то есть, но по сути оба одинаковы (просто во 2-м добвлен аттач)

Я честно говоря не понял как изменить на свои параметры (на свой сервер) строки :

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "helpdesk@fabrikam.com"
objEmail.To = "administrator@fabrikam.com"
objEmail.Subject = "Server down"
objEmail.Textbody = "Server1 is no longer accessible over the network."

objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smtpmailer"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send


И что с этим делать, что менять на свое (кроме 1-го абзаца - первые 5 строк)
И почему там http мелкомягкие указаны... ?
...
Рейтинг: 0 / 0
Закрыть всплывающее окно из командной строки
    #33897043
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, не помню с какой именно странички брал первый скрипт...
тем не менее, когда тестил - работало...
Можно погуглить.


G> И что с этим делать, что менять на свое (кроме 1-го абзаца - первые
G> 5 строк)

Ну, вобще то надо указать все свои данные или провайдера.
Вместо "smtpmailer" пробовал указывать имя своего майл-сервера или прова
ну и порт конечно в следующем параметре...

G> И почему там http мелкомягкие указаны... ?

хз. не разбирался.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Windows [игнор отключен] [закрыт для гостей] / Закрыть всплывающее окно из командной строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]