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


Функция SendMessageTimeoutA (winuser.h)

Отправляет указанное сообщение в одно или несколько окон.

Синтаксис

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

Параметры

[in] hWnd

Тип: HWND

Дескриптор окна, процедура которого получит сообщение.

Если этот параметр HWND_BROADCAST ((HWND)0xffff), сообщение отправляется всем окнам верхнего уровня в системе, включая отключенные или невидимые неуправляемые окна. Функция не возвращается, пока каждое окно не истекло. Таким образом, общее время ожидания может быть до значения uTimeout умножено на число окон верхнего уровня.

[in] Msg

Тип: UINT

Отправленное сообщение.

Списки системных сообщений см. в System-Defined сообщениях.

[in] wParam

Тип: WPARAM

Дополнительные сведения о сообщении.

[in] lParam

Тип: LPARAM

Дополнительные сведения о сообщении.

[in] fuFlags

Тип: UINT

Поведение этой функции. Этот параметр может быть одним или несколькими из следующих значений.

Ценность Значение
SMTO_ABORTIFHUNG
0x0002
Функция возвращается, не ожидая истечения периода ожидания ожидания, если получающий поток, как представляется, не отвечает или "зависает".
SMTO_BLOCK
0x0001
Запрещает вызову потока обрабатывать любые другие запросы до тех пор, пока функция не возвращается.
SMTO_NORMAL
0x0000
Вызывающий поток не предотвращает обработку других запросов во время ожидания возврата функции.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
Функция не применяет период ожидания до тех пор, пока получающий поток обрабатывает сообщения.
SMTO_ERRORONEXIT
0x0020
Функция должна вернуть значение 0, если окно получения уничтожено или его собственный поток умирает во время обработки сообщения.

[in] uTimeout

Тип: UINT

Длительность периода ожидания в миллисекундах. Если сообщение является широковещательным, каждое окно может использовать полный период ожидания. Например, если указать пять секундный период ожидания и есть три окна верхнего уровня, которые не могут обработать сообщение, может потребоваться до 15 секунд задержки.

[out, optional] lpdwResult

Тип: PDWORD_PTR

Результат обработки сообщения. Значение этого параметра зависит от указанного сообщения.

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

Тип: LRESULT

Если функция выполнена успешно, возвращаемое значение ненулевое. SendMessageTimeout не предоставляет сведения о времени ожидания отдельных окон, если используется HWND_BROADCAST.

Если функция завершается сбоем или истекает время ожидания, возвращаемое значение равно 0. Обратите внимание, что функция не всегда вызывает SetLastError при сбое. Если причина сбоя важна, вызовите SetLastError(ERROR_SUCCESS) перед вызовом SendMessageTimeout. Если функция возвращает значение 0, а GetLastError возвращает ERROR_SUCCESS, то обработайте ее как универсальный сбой.

Замечания

Функция вызывает процедуру окна для указанного окна и, если указанное окно принадлежит другому потоку, не возвращается, пока процедура окна не обработала сообщение или указанный период ожидания истек. Если окно, получающее сообщение, принадлежит той же очереди, что и текущий поток, процедура окна вызывается напрямую— значение времени ожидания игнорируется.

Эта функция считает, что поток не отвечает, если он не вызывает GetMessage или аналогичную функцию в течение пяти секунд.

Система выполняет маршаллинг только для системных сообщений (в диапазоне от 0 до (WM_USER–1)). Чтобы отправить другие сообщения (те >= WM_USER) в другой процесс, необходимо выполнить настраиваемую маршалинг.

Заметка

Заголовок winuser.h определяет SendMessageTimeout как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, который не является кодировкой нейтральным, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll
набор API ext-ms-win-ntuser-message-l1-1-0 (представлено в Windows 8)

См. также

концептуальные

GetMessage

InSendMessage

сообщений и очередей сообщений

PostMessage

Справочник

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage