![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как имея хендл чужого окна узнать о его закрытии ? [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]Самое простое: проверять существует оно или нет.