钩子的一个初级有关问题,

钩子的一个初级问题,请指教!界面上只有一个按键,一个EDIT(PassWordChar属性设成了*)代码如下function Test

钩子的一个初级问题,请指教!
界面上只有一个按键,一个EDIT(PassWordChar属性设成了*)
代码如下

function TestHookProc(Code: Integer; WParam: Longint;Msg:Longint): Longint;stdcall;
begin
  if (Code = HC_ACTION) then
  if PMsg(Msg)^.Message = EM_SETPASSWORDCHAR then
  begin
  showMessage('已经截获该消息');

  end;
  Result := CallNextHookEx(HookHandle, Code, WParam,Longint(@Msg));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HookHandle:=SetWindowsHookEx(WH_GETMESSAGE,TestHookProc,0,GetCurrentThreadID);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Edit1.Handle,EM_SETPASSWORDCHAR,0,0);
end;


现在情况是,我点了按钮之后,会提示消息被拦截,但是EDIT也收到了消息(点击EDIT就能看到里面的内容了)
而把CallNextHookEx注释掉,或者直接强制把result赋为1,也都能杀不到这个消息

请问,如何让这个消息传不到EDIT呢?

[解决办法]
WH_GETMESSAGE 不能阻断消息,但是可以修改消息
你可以把消息号改成WM_NULL
[解决办法]
直接把消息截获之后发送一个WM_Null或者空字符消息过去