| Предыдущий | Следующий |
| ERROR_CURRENT_DOMAIN_NOT_ALLOWED | ERROR_INVALID_MENU_HANDLE |
ERROR_INVALID_WINDOW_HANDLE
description[Переданный HWND недопустим для запрошенной операции USER32.]HWND не идентифицирует существующее окно
Значение HWND — непрозрачный дескриптор диспетчера окон. Этот статус относится к идентичности и времени жизни объекта GUI, а не к заголовку окна, имени класса или текущей видимости.
Дескрипторы окон могут устареть после уничтожения, а код, кэширующий дескриптор на время асинхронной работы, способен вступить в гонку с потоком-владельцем окна. Числовое значение, когда-то представлявшее окно, не является постоянным идентификатором объекта. Для межпроцессного обнаружения также нужен свежий дескриптор, полученный через перечисление или поиск окон, а не ранее сериализованное значение.
Что проверить
- Запишите API, создавший
HWND, и API, который его отклонил. - Проверьте, не уничтожил или не пересоздал ли поток-владелец окно до сбойного вызова.
- Рассматривайте повторно использованное значение дескриптора как непрозрачное; не выводите идентичность объекта из числа.
- Если цель находится в другом процессе, повторно получите дескриптор непосредственно перед операцией и учитывайте завершение целевого процесса.
Это отличается от ERROR_WINDOW_OF_OTHER_THREAD: второй статус может описывать допустимое окно, принадлежность потоку которого делает операцию недопустимой.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.