Отправляет заданное сообщение в одно или несколько окон.
Синтаксис
LRESULT SendMessageTimeout( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult ); |
Параметры
hWnd
[in] Дескриптор окна, оконная процедура которого получит сообщение.Если этот параметр - HWND_BROADCAST, сообщение отправляется всем окнам верхнего уровня в системе, включая заблокированные или невидимые не находящиеся в собственности окна. Функция не возвращает значение до тех пор, пока каждое окно не зафиксирует время. Поэтому, суммарное время ожидания может быть выше значения параметра uTimeout, умноженного на число окон верхнего уровня.
Msg
[in] Определяет сообщение, которое будет отправляться.wParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.lParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.fuFlags
[in] Определяет, как отправлять сообщение. Этот параметр может состоять из одного или нескольких нижеследующих значений:
Значение |
Предназначение |
SMTO_ABORTIFHUNG |
Возвращает значение без ожидания, когда истечет период блокировки по времени, если принимающий поток не отвечает или находится в "зависшем" состоянии. |
SMTO_BLOCK |
Препятствует вызывающему потоку обрабатывать любые другие запросы до тех пор, пока функция не возвратит значение. |
SMTO_NORMAL |
Вызывающему потоку не препятствуется обрабатывать другие запросы в ходе ожидания, когда функция возвратит значение. |
SMTO_NOTIMEOUTIFNOTHUNG | Microsoft® Windows® 2000/Windows XP: Не возвращает значения, когда период блокировки по времени истек, если принимающий поток прекращает отвечать. |
uTimeout
[in] Устанавливает продолжительность, в миллисекундах, периода времени простоя блокировки. Если сообщение - транслируемое сообщение, каждое окно может использовать полный период времени блокировки. Например, если Вы задаете период времени блокировки пять секунд и имеется три окна верхнего уровня, которые будут не в состоянии обрабатывать сообщение, Вы должны иметь до 15 секунд задержку.lpdwResult
[in] Принимает результат обработки сообщения. Это значение зависит от отправленного сообщения.Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не нуль.
Если функция завершается ошибкой, величина возвращаемого значения - нуль. Чтобы получить дополнительные данные об ошибках, вызовите функцию GetLastError. Если GetLastError возвращает нуль, то функция, заблокирована. SendMessageTimeout не предоставляет информацию о заблокированных конкретных окнах, если используется флажок HWND_BROADCAST .
Замечания
Эта функция вызывает оконную процедуру заданного окна и, если заданное окно принадлежит другому потоку, не возвращает значение до тех пор, пока оконная процедура не обработает сообщение, или не истечет заданный период времени блокировки. Если окно, получающее сообщение, принадлежит той же самой очереди, как и текущий поток, оконная процедура вызывается непосредственно - величина времени блокировки игнорируется.
Эта функция полагает, что поток не отвечает или - "завис", если он не вызывает GetMessage или подобную функцию в пределах пяти секунд.
Система совершает сортировку только системных сообщений (которые в диапазоне от 0 до WM_USER). Чтобы отправлять другие сообщения (которые значением выше WM_USER) другому процессу, Вы должны сделать специальную сортировку (маршалинг).
Windows 95/98/Me: SendMessageTimeoutW поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Смотри также
Обзор Сообщения и очереди сообщений, GetMessage, InSendMessage, PostMessage, SendDlgItemMessage, SendMessage, SendMessageCallback, SendNotifyMessage
Размещение и совместимость SendMessageTimeout |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |