Поделиться через


Функция WerReportHang (errorrep.h)

Инициирует создание отчетов об отсутствии ответа в указанном окне.

Синтаксис

HRESULT WerReportHang(
  [in]           HWND   hwndHungApp,
  [in, optional] PCWSTR pwzHungApplicationName
);

Параметры

[in] hwndHungApp

Дескриптор окна, которое не отвечает.

[in, optional] pwzHungApplicationName

Имя неотвечающего приложения, которое будет отображаться в пользовательском интерфейсе отчетов о зависаниях. Длина имени ограничена 128 символами, включая признак конца NULL . Если значение РАВНО NULL, WER пытается получить имя из ресурсов целевого образа. Если не удается получить имя из образа, будет использоваться имя образа.

Возвращаемое значение

Возвращает S_OK, если функция смогла инициировать отчет или код ошибки при сбое. Обратите внимание, что S_OK не обязательно означает, что отчетность "без ответа" завершена успешно, только то, что она была инициирована.

Комментарии

Осторожностью Приложения не должны использовать этот API для сообщения об отсутствии ответа от окон верхнего уровня; Обнаружение отсутствия ответа и отчеты по умолчанию доступны для всех окон верхнего уровня в Windows XP и более поздних версиях. Эту функцию следует использовать только для сообщения об отсутствии ответа из дочерних окон. Как правило, эта функция используется только в том случае, если окно верхнего уровня и его дочерние окна принадлежат разным процессам и в дочернем окне обнаруживается не-ответ.
 
Эта функция инициирует отчеты о отсутствии ответа, которые затем завершают процесс, создавший окно. Вызывающий объект отвечает за определение того, когда дочернее окно не отвечает, и должен запрашивать у пользователя согласие, прежде чем сообщать о неответве. Типичным способом обнаружения окна, которое не отвечает, является проверка своевременного ответа на сообщения окна. Для обнаружения этого условия можно использовать функцию SendMessageTimeout .

Эта функция является асинхронной; не дожидается завершения отчетов о неответвом. Отменить отчеты о неответвом состоянии после запуска невозможно.

При использовании этой функции важно соблюдать следующие требования:

  • Убедитесь, что дочерние окна создаются отдельным процессом. После завершения отчетов о отсутствии ответа процесс, создавший окно, завершится.
  • Укажите в дочернем окне визуальные подсказки о том, что оно не отвечает; Отчеты без ответа не приведут к заглушению дочернего окна, в нем будет отображаться только диалоговое окно отчетов.
  • Перед вызовом этой функции убедитесь, что пользователь хочет завершить работу дочернего окна, которое не отвечает.
  • Чтобы пользовательский интерфейс отчетов без ответа появился перед окном, которое не отвечает, приложение должно вызвать функцию AllowSetForegroundWindow (передавая ASFW_ANY для идентификатора процесса) из процесса окна верхнего уровня.

Требования

   
Минимальная версия клиента Windows Vista с пакетом обновления 1 (SP1) [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header errorrep.h
Библиотека Faultrep.lib
DLL Faultrep.dll