如何象拦截鼠标,键盘一样拦截 WM_TIMER ?
能给出一段代码说明一下吗?谢谢!

解决方案 »

  1.   

    如完全用API,可以使用SetTimer
    并响应WM_TIMER就可以了,在Delphi中有个消息类型是TWMTIMER
    其实VCL提供了如此多的源代码,多找找会有很多发现.
    具体你可以参考一下TTimer组件,里面有很完美的实现.
      

  2.   

    type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure WMTimer(var msg:Tmessage);message WM_TIMER;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMTimer(var msg:Tmessage);
    begin
     showmessage('sdfsfs');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      sendmessage(handle,WM_TIMER,0,0);
    end;end.
      

  3.   

    前面两位的要综合一下,自己SendMessage的时候发WM_TIMER干什么呀,肯定是SETTIMER以后或是拥有TTimer组件后才有用的。
    还有,楼主查帮助的时候肯定也看到了对于WM_TIMER没有什么对应的WH_TIMER HOOK,我也没有做过类似的HOOK,不过感觉应该使用最上层的WH_GETMESSAGE Hook,因为API不可能把所有的HOOK都细化为类似WH_TIMER这样的地步吧。