Функция 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

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

Списки системных сообщений см. в разделе Системные сообщения.

[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. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Если GetLastError возвращает ERROR_TIMEOUT, время ожидания функции истекло.

Windows 2000: Если GetLastError возвращает значение 0, время ожидания функции истекло.

Комментарии

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

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

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

Примечание

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

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header 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