В чём разница между PostMessage и SendNotifyMessage?

Материал из Wiki Test Lab
Перейти к: навигация, поиск

Назад    Главная
 

В чём разница между PostMessage и SendNotifyMessage?

Есть несколько тонких различий в способах, которыми вы можете отправлять сообщения в Windows®, но основным различием между PostMessage и SendNotifyMessage является то, что функции семейства SendMessage отправляют (send) сообщение в другое окно немедленно, с помощью прямого вызова их оконной процедуры и ожидания ответа, в то время как PostMessage заносит сообщение в очередь в виде записи TMessage и возвращает управление немедленно, без ожидания.

С SendMessage, принимающая сторона обрабатывает сообщение немедленно, вместо того, чтобы обработать его в очереди в порядке поступления. Например, предположим, что вы написали:

var
 Wnd: HWND;
 S: String;
...
 SendMessage(Wnd, WM_SETTEXT, 0, Integer(PChar('Fooblitzky')));
 SetLength(S, GetWindowTextLength(Wnd));
 GetWindowText(Wnd, PChar(S), Length(S));
 SetLength(S, StrLen(PChar(S)));
 // S = 'Fooblitzky'

GlobalHookDemo.jpg

Личные инструменты