powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
11 сообщений из 11, страница 1 из 1
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35817865
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IE иногда при доступе по HTTPS отображает окна "Предупреждение системы безопасности"
Нужно при появлении такого окна на экране - обнаружить его и после этого найти ProcessId того процесса IE, который создал это окно.
Например :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set WshShell = CreateObject("WScript.Shell")
Set ie = CreateObject("InternetExplorer.Application")

ie.Navigate "https://cabinet.globax.biz"
do while ie.busy
' 1) Как-то смотрим - не появилось интересующее окно ( на крайний(!) случай по его Заголовку , если иначе невозможно , т.к. не понятно - как определиь название этого окошака в независимости от локализации Windows)
'  2 ) Если появилось - определение ProcessId того процесса IE , который создал это окно и выход из цикла
loop
WshShell.AppActivate ProcessId
WshShell.SendKeys "{LEFT}"
WshShell.SendKeys "{ENTER}"
ie.Visible =  1 
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35817876
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На скриптах это сделать невозможно.
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35817882
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyНа скриптах это сделать невозможно.
Если требуется использовать WinAPI, то я знаю , как в VBS использовать WinAPI (через com оболочки win api вызовов ).
Набросайте, плз, пример, - как в VB это сделать ?
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35818003
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FindWindow или EnumWindows+GetWindowText в зависимости от характеристик окна, GetWindowThreadProcessId
Если EnumWindows+GetWindowText, то всю процедуру поиска нужно будет делать в com.
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35818070
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю, для задания требуемого окна нужно указать его заголовок, но как определить этот заголовок в разных локализациях Windows (т.е. как сделать код независимым от локализации) ?
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35818623
VxS_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefiКак я понимаю, для задания требуемого окна нужно указать его заголовок, но как определить этот заголовок в разных локализациях Windows (т.е. как сделать код независимым от локализации) ?
Поиск дескриптора по типу окна не подходит?
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35819340
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefiКак я понимаю, для задания требуемого окна нужно указать его заголовок, но как определить этот заголовок в разных локализациях Windows (т.е. как сделать код независимым от локализации) ?Перебрать все локализации винды и выписать тексты)
Возьми Spy++, исследуй окно, может в нем еще есть за что зацепиться, помимо заголовка.
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35819355
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, когда такое окно появляется на экране, оно становится активным само. Поэтому 2) и WshShell.AppActivate не нужно. Достаточно проверять GetActiveWindow на предмет нужных характеристик и слать SendKeys если они нашлись.
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35820639
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще вот так , видимо,
hwnd=GetLastActivePopup(ie.hwnd)
или
hwnd=GetWindow(ie.hwnd, GW_ENABLEDPOPUP)
и + всякие его Windows Styles,Extended Styles,Class Styles (пока не знаю как получать ...)

после чего взять : ThreadId=GetWindowThreadProcessId(WinWnd, ProcessId)

Вот теперь бы еще такой вопрос понять :
а нельзя ли как-то ловить событие появления требуемого окна ?
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35820653
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy
Вообще, когда такое окно появляется на экране, оно становится активным само

Да, забыл сказать - после появления такое окна на экране и до начала работы кода SendKeys (между ними пока предполагается пауза Sleep 100) возможно, что другие приложения активизируют свои окна .
...
Рейтинг: 0 / 0
Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
    #35820911
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefi(пока не знаю как получать ...)Spy++
Идет в комплекте Visual Studio 6.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обнаружить окно и найти ProcessId процесса ( IE ) его создавшего
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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