function HookProc(iCode: Integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
begin
  Result := 0;
  if iCode < 0 then
    Result := CallNextHookEx(hHook, iCode, wParam, lParam)
  else
  begin
    {......
 
   在这里加入用GETCURSORPOS得到鼠标坐标,不用我写了吧!     ......}
    Result := CallNextHookEx(hHook, iCode, wParam, lParam);
  end;
end;procedure TFRM_Agent.Hook(En: Boolean = true);
begin
  if En then
    hHook := SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0)
  else
    UnHookWindowsHookEx(hHook);
end;

解决方案 »

  1.   

    我再来顶一下!!在SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0)中,我想应该是加入WH_MOUSE才对的,但是我的机器总是没有反应,不知道是怎么回事,请高手指点;
    上面的程序会把鼠标与键盘等的动作监视到!!!
      

  2.   

    XZHIFEI你能不能把编译通过的源程序发到我的[email protected]中,谢谢。
      

  3.   

    CHULEON(LEON):非常对不起,上面的代码在我自己做的一个共享软件中,而且也不是用来得鼠标坐标的,要不然,我一起贴出来了!!报歉!!!
      

  4.   

    XZHIFEI,你能不能只把这段与鼠标有关的代码挑出来,编译过后发给我这段源码呢。del如果你有发给我也一样感激,急用。谢谢了!!
      

  5.   

    del_c_sharp(头大中......) :为什么说我是只飞呢?????由于昨天没有时间,没有给出详细源代码,现在我写出来了!!以下的原代码可以不用TIMER控件,照样监视鼠标坐标,至于是否更好,我不知道,大家去验证吧!!Unit Unit1;InterfaceUses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;Type
      TForm1 = Class(TForm)
        Button1: TButton;
        Procedure Button1Click(Sender: TObject);
        Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
      private
        { Private declarations }
        Procedure Hook(En: Boolean = true);
      public
        { Public declarations }
      End;Var
      Form1: TForm1;
      hHook: LongWord;
      xy: TPoint;
    Implementation{$R *.DFM}Function HookProc(iCode: Integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
    Begin
      Result := 0;
      If iCode < 0 Then
        Result := CallNextHookEx(hHook, iCode, wParam, lParam)
      Else
        Begin
          GETCURSORPOS(XY);
          form1.Caption := IntToStr(XY.x) + ' ' + IntToStr(XY.y);
          Result := CallNextHookEx(hHook, iCode, wParam, lParam);
        End;
    End;Procedure TForm1.Hook(En: Boolean = true);
    Begin
      If En Then
        hHook := SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0)
      Else
        UnHookWindowsHookEx(hHook);
    End;Procedure TForm1.Button1Click(Sender: TObject);
    Begin
      Hook;
    End;Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
    Begin
      Hook(false);
    End;End.
      

  6.   

    飞,非常感谢,已收到e-mail,我会把分都给你,谢谢