![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,630
|
![]()
Таймер несколько раз в секунду должен запускать процедуру провеки, появилось ли новое окно. Необходимо получить ответ на вопрос - создалось ли какое-нибудь новое окно.
|
![]() |
![]() |
![]() |
#2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
попробуйте вести лог окон... что не есть хорошо. В помощь подойдут функции NextWindow FirstWindow и другие с припиской Window ( вроде не ошибся ).
2й вариант который наиболее будет правильней - перехват апи. Попытатся переписать апи функцию CreateWindow и CreateWindowEx. И ссылаться на свою и после из своей вызывать оригинал... проблемы скорей всего будут с правами на компе + лишний вес с прогой ( если это играет для Вас роль ). Я лично не занимался перехватом но смотрел и проверял примеры ( по опыту, при тесте своего примерчика, мне приходилось перезагружать систему из-за моих ошибок ). Собственно окон и не так много так что лог будет полегче осуществить ( что собственно я лично и сделал бы ). А проверять флаги окон на то, что они являются родителями а не всякие кнопки и т.п. Ах да вариант ( конечно незнаю сработает ли ) найти хендл таск бара и в нем искать те окна которые отображаются на нем. |
![]() |
![]() |
![]() |
#3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
вот пример программы которая ставит перехват на функцию MessageBoxExA (и как следствие на функцию MessageBoxA) В СВОЁМ ПРОЦЕССЕ
если надо будет перехватить создание любых окон, но надо аналогично перехватывать CreateWindowExA, но потом могут быть проблемы. Последний раз редактировалось rpy3uH; 21.11.2007 в 19:45. |
![]() |
![]() |
![]() |
#4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,630
|
![]()
rpy3uH, выкладываю пример окна с ошибкой.
Впринципе, если возможно, нужно кликнуть по кнопке нет, хотя можно просто блокировать окно. Для вызова ошибки нужно 2 раза кликнуть на go. Один раз для загрузки страницы и один раз для вызова ошибки. |
![]() |
![]() |
![]() |
#5 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Не смог посмотреть в работе "2 раза кликнуть на go" - у меня нет CL-компонентов. Последний раз редактировалось mihali4; 22.11.2007 в 02:21. |
|
![]() |
![]() |
![]() |
#6 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,630
|
![]()
Окно создается Ишаком - webbrowser. Реакция на ошибку при выполнении ява скрипта.
|
![]() |
![]() |
![]() |
#7 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Может, я чего-то не понял...
Родитель известен. Простейшее решение - действительно, как и предлагалось - составить первоначальный список окон родителя и проверять по таймеру для начала их количество. Потом - имя класса окна. Либо, если имя класса уникальное, то енумом проверять наличие такого окна. |
![]() |
![]() |
![]() |
#8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А что если в таймере получать хендл вновьпоявившегося окна (я правильно думаю что оно появляется на переднем плане?) через GetForegroundWindow, далее проверять его класс и (может) заголовок и если это оно то... Ну что там нуна эт уж фантазия пусть старается.
I'm learning to live...
|
![]() |
![]() |
![]() |
#9 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
в общем вот та же программа, нажимаем "Поставить перехват", нажимаем два раза GO, сообщение ишака не выводится, выводится только дельфёвое сообщение.
Последний раз редактировалось rpy3uH; 23.11.2007 в 19:30. |
![]() |
![]() |
![]() |
#10 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,630
|
![]()
rpy3uH, толку ноль
Универсального решения не получилось, заблокировать окна у меня не получилось. Сделал несколько частных случаев. Вот один из них - окно появляется и сразу закрывается кнопкой Escape Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как имея handle окна узнать handle edit-a который находится в етом окне | SeRhy | Общие вопросы Delphi | 1 | 20.07.2008 13:48 |
Как мне в обработчике хука узнать хендл окна? | vitalik007 | Win Api | 5 | 16.05.2008 09:34 |
Размер окна в зависимости от размера окна | Reverent | JavaScript, Ajax | 1 | 02.02.2008 15:49 |
закрыть все дочерни окна, кроме главного окна | Worms | Общие вопросы Delphi | 2 | 03.12.2007 22:18 |
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? | dimonchuk | Общие вопросы Delphi | 1 | 11.08.2007 12:13 |