Что означает код ошибки Windows 1400 (ERROR_INVALID_WINDOW_HANDLE)?

 
Предыдущий Следующий
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: второй статус может описывать допустимое окно, принадлежность потоку которого делает операцию недопустимой.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.