Функция SendMessageTimeout 


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

Синтаксис

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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz