Функция 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
Поведение этой функции. Этот параметр может быть одним или несколькими из следующих значений.
[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) |
См. также раздел
Основные понятия
Справочные материалы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по