Есть ли функция Windows API, чтобы определить, закрыто ли скрытое окно или не использует его дескриптор? - PullRequest
2 голосов
/ 01 марта 2012

У меня есть дескриптор (IntPtr) скрытого окна, которое завершается / завершается автоматически через определенное время, например, после минуты. Есть ли в windows api функция для определения того, завершено ли скрытое окно или нет, используя его дескриптор?

Обратите внимание, что окно скрыто с помощью внешней функции ShowWindow со значением 0 в качестве значения параметра nCmdShow .

Ответы [ 3 ]

4 голосов
/ 01 марта 2012

Функция IsWindow должна делать то, что вы просили.Однако вам следует соблюдать осторожность: дескрипторы окон могут быть переработаны, поэтому ваше окно может быть закрыто, а его дескриптор назначен другому новому окну.

2 голосов
/ 01 марта 2012

Полагаю, вы можете проверить с помощью IsWindow, существует ли он по-прежнему. См. MSDN для получения дополнительной информации.

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);
1 голос
/ 01 марта 2012

Если окно просто скрыто, используя ShowWindow (0) (то есть SW_HIDE), то, скорее всего, HWND все равно будет действительным, поэтому IsWindow () вернет TRUE.Чтобы проверить, является ли действительный HWND видимым по сравнению с невидимым, используйте вызов IsWindowVisible USER32.

В зависимости от целевого приложения, вы можете использовать это в дополнение к IsWindow (), плюс проверкаPID и класс для защиты от утилизации HWND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...