Comment intercepter le WM_PASTE dans un TRichEdit ?

J'ai essayé de passer par une WindowProc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.RichEditProc(var Msg: TMessage);
begin
   if Msg.Msg = WM_PASTE then
   begin
      if IsClipboardFormatAvailable(CF_UNICODETEXT) then
      begin
         Label1.Caption := ClipBoard.AsText;
         Exit;
      end;
   end;
 
   _OldRichEditProc(Msg);
end;
Mais, il n'entre même pas dans le premier if, comme si ce message n'était utilisé.

J'ai essayé d'utiliser un TApplicationEvents. Mais, le message WM_PASTE ne passe jamais.
J'ai essayé de traquer tous les messages qui passent pour essayer de deviner lequel serait le bon.
J'obtiens : 15, 275, 675, 513, 514, 512, 280.
Si je converti en hexadécimal et que je cherche dans l'unité Messages, ça donne : WM_PAINT, WM_TIMER, WM_MOUSELEAVE, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE.
Le seul qui n'a pas de correspondance, c'est le 280 (donc 118 en hexadécimal). Ce lien (http://social.msdn.microsoft.com/for...9-f5a0ed0d2e0a) a l'air de dire que ce serait WM_SYSTIMER.
Donc, je ne vois rien qui ressemblerait à un WM_PASTE.

Comment faire ?