Функція SendMessageTimeout
Надсилає задане повідомлення в одне або кілька вікон.
[in] Дескриптор вікна, віконна процедура якого отримає повідомлення.
Якщо цей параметр -HWND_BROADCAST, повідомлення надсилається всім вікнам верхнього рівня в системі, включаючи заблоковані або невидимі вікна, що не знаходяться у власності. Функція не повертає значення, поки кожне вікно не зафіксує час. Тому сумарний час очікування може бути вищим за значення параметраuTimeout, помноженого на число вікон верхнього рівня.
[in] Визначає повідомлення, яке надсилатиметься.
[in] Встановлює додаткову інформацію, що конкретизує повідомлення.
[in] Встановлює додаткову інформацію, що конкретизує повідомлення.
[in] Визначає, як надсилати повідомлення. Цей параметр може складатися з одного або декількох нижченаведених значень:
Значення
Призначення
SMTO_ABORTIFHUNG
Повертає значення без очікування, коли закінчиться період блокування за часом, якщо потік, що приймає, не відповідає або знаходиться в "завислом" стані.
SMTO_BLOCK
Перешкоджає викликаючому потоку обробляти будь-які інші запити, доки функція не поверне значення.
SMTO_NORMAL
Викликаючий поток не перешкоджає обробляти інші запити в ході очікування, коли функція поверне значення.
[in] Встановлює тривалість, в мілісекундах, періоду простою блокування. Якщо повідомлення - повідомлення, що транслюється,кожне вікно може використовувати повний період блокування. Наприклад, якщо Ви задаєте період блокування п'ять секунд і є три вікна верхнього рівня, які не в змозі обробляти повідомлення, Ви повинні мати до 15 секунд затримку.
[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.
Розміщення та сумісність SendMessageTimeout