Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как имея хендл чужого окна узнать о его закрытии ? [D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


Пастор ©   (2004-10-11 23:16:00) 

Как имея хендл чужого окна узнать о его закрытии ?


Пастор   (2004-10-12 12:12:00) [1]

Ascan, спасибо. Это то, что нужно.


Ascan   (2004-10-12 12:05:00) [2]

Lin7
>> Функция IsWindow ?

Функции для работы с окнами
BOOL IsWindow( HWNDhWnd );

Функция определяет, существует ли окно, которое идентифицирует указанный дескриптор.
Если дескриптор идентифицирует существующее окно, то функция возвращает ненулевое значение, а если окно не существует, то - 0.
Рекомендуется использовать данную функцию только для определения существования окон своего приложения. Использование данной функции для определения существования окон других приложений может привести к ошибке программы, т.к. окно определенное как существующее, может быть разрушено своим приложением в следующее мгновенье.

Параметр    Описание
hWnd [in]  Дескриптор окна


Системные требования и поддержка:
Windows NT/2000:  Windows NT 3.1 и выше
Windows 95/98/Me:Windows 95 и выше
Delphi:          Delphi 5 и выше
С++:              Winuser.h; User32.lib


Lin7   (2004-10-12 11:16:00) [3]

Функция IsWindow ?


Ascan   (2004-10-12 11:08:00) [4]

Пастор, попробуй так:
if IsWindow(hWnd)
 then ... // Существует
 else ... // Нет


Erik1   (2004-10-12 10:53:00) [5]

Может попробовать узнать о завершении процесса, если с закрытием окна завершается процес.


Юра   (2004-10-12 10:53:00) [6]

Поставь хук на это окно SetWindowHook. Отлавливай сообщение WM_CLOSE или WM_DESTROY. Callback процедуру хука размести в ДЛЛ, если отслеживаемое окно находится в другом процессе.


KSergey   (2004-10-12 09:30:00) [7]

> [2] Пастор   (12.10.04 09:27)

И где же здесь используется хендл? ;)
Можно, думаю, просто ссендить какое-либо сообщение типа WM_GETTEXT или что-то подобное "нейтральное" и проверять возвращаемую ошибку... Хотя, а вдруг успеет создасться окно, которое получит тот же хендл? Маловероятно, конечно...


Пастор   (2004-10-12 09:27:00) [8]

Самое простое: проверять существует оно или нет.

А как ? Я делал :

repeat
 sleep(10);
until wnd <> FindWindow(nil, 'My window');

Работает только в том случае, если окно не меняет заголовка.


Yanis   (2004-10-11 23:21:00) [9]

Самое простое: проверять существует оно или нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо