2. Посылка сообщений

В Windows API определен ряд функций, позволяющих послать сообщение

2.1. Функция SendMessage

Функция посылает указанное ней сообщение окну или множеству окон и не возвращается, пока сообщение обрабатывается

Function SendMessage(hWnd:HWND; Msg:Cardinal; wParam, lParam: integer):longint;

2.2. Функция PostMessage

Функция посылает указанное ней сообщение, но в отличии от SendMessage помещает сообщение в очередь и сразу возвращается, не дожидаясь обработки сообщений.

Function PostMessage(hWnd:HWND; Msg:Cardinal; wParam, lParam: integer): boolean;

Таким образом функция PostMessage не годится для отправки срочных сообщений, но зато она не блокирует вызвавшее сообщение на время обработки сообщения приемником.

2.3. Метод Perform

Для отправки сообщений самому себе в классе TControl реализован метод Perform, который фактически ничего никуда не отправляет, а напрямую вызывает WindowProc класса, что конечно работает быстрее.

function TControl.Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
var
  Message: TMessage;
begin
  Message.Msg := Msg;
  Message.WParam := WParam;
  Message.LParam := LParam;
  Message.Result := 0;
  if Self <> nil then WindowProc(Message);
  Result := Message.Result;
end;