最好不要用DLL,谢谢谢谢谢谢大哥们了!

解决方案 »

  1.   

    System Wide Mouse Hook v.1.1 
    http://www.torry.net/mouse.htm#3173
      

  2.   

    saucer(思归) ( ) 
    谢谢!我看了,那是个控件,而且是for d3,整理起来好麻烦。直接给我来一段代码好吗?再次谢谢!最好不要DLL!
      

  3.   

    you have to use a hook, seeGpSysHook (written for Delphi 5. It should compile with Delphi 6)
    http://17slon.com/gp/gp/gpsyshook.htm
      

  4.   

    to dahuzizyd(明天你就要嫁给我啦!) :Screen.Cursor主要用来决定鼠标的形状。
    例如:Screen.Cursor := crHourglass;    { Show hourglass cursor }谁能给我来一段代码解决这个问题,100分立即送上,谢谢!
      

  5.   

    library getkey;
    uses
      Windows,
      Messages,
      classes,
      stdctrls,
      Sysutils,
      dllfrm in 'dllfrm.pas' {Form2};var
        hNextHookProc: HHook;
        procSaveExit: Pointer;
        hwnd,hwnd2:longint;
        info:String;function mouseHookHandler(iCode: Integer;wParam: WPARAM;lParam: LPARAM): LRESULT; stdcall;
    var
      obj:Tobject;
      hwnd:longint;
      mp:Tpoint;
    begin
         result:=0;
         if icode<0 then
         begin
           result:=callnexthookex(hnexthookproc,icode,wparam,lparam);
           exit;
         end;
    //     if wparam = WM_LBUTTONUP then begin//     end;
        if wparam=WM_MOUSEMOVE then begin
           GetCursorPos(mp);
        if mp.x <300 then begin
            //  sendmessage(findwindow('notepad',nil),WM_SETTEXT,0,integer(pchar(inttostr(mp.x)+','+inttostr(mp.y ))));
             if findwindow('TForm2','dlltest') =0 then begin
               with TForm2.Create(nil) do
               begin
                 showmodal;
               end;
             end;
           end
           else begin
             if findwindow('TForm2','dlltest')<>0 then 
    //           form2.Destroy;
           end;
        end;
    end;function EnableHotKeyHook: BOOL; export;
    begin
        Result := False;
        if hNextHookProc <> 0 then Exit;
        hNextHookProc := SetWindowsHookEx(WH_mouse, mouseHookHandler,HInstance, 0);
        Result := hNextHookProc <> 0;
    end;function DisableHotKeyHook: BOOL; export;
    begin
        if hNextHookProc <> 0 then
        begin
            UnhookWindowshookEx(hNextHookProc); // 解除 mouse Hook
            hNextHookProc := 0;
        end;
        Result := hNextHookProc = 0;
    end;exports
        EnableHotKeyHook,
        DisableHotKeyHook;begin
        hNextHookProc := 0;
        procSaveExit := ExitProc;
    end.
      

  6.   

    这个问题我感兴趣,看我的: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(peventmsg(lparam)^.message = WM_LBUTTONDOWN) Or
        (peventmsg(lparam)^.message = WM_LBUTTONUP) Or
        (peventmsg(lparam)^.message = WM_LBUTTONDBLCLK) Or
        (peventmsg(lparam)^.message = WM_RBUTTONDOWN) Or
        (peventmsg(lparam)^.message = WM_RBUTTONUP) Or
        (peventmsg(lparam)^.message = WM_RBUTTONDBLCLK) Or
        (peventmsg(lparam)^.message = WM_MBUTTONDOWN) Or
        (peventmsg(lparam)^.message = WM_MBUTTONUP) Or
        (peventmsg(lparam)^.message = WM_MBUTTONDBLCLK)
        Then
        Begin
          GETCURSORPOS(XY);
          form1.Caption := IntToStr(XY.x) + ' ' + IntToStr(XY.y);
        End;
      Result := CallNextHookEx(hHook, iCode, wParam, lParam);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.
      

  7.   

    xzhifei(飞) 哇 直接来了一段清晰的代码,确实好用,而且不用DLL!!!
    zsy_good(只要坚定不移的走下去,那一定会成功)也来了一段代码,不过用了dll.
    谢谢xzhifei(飞)朋友,如果csdn上的朋友都象xzhifei(飞)一样,我们的工作就轻松多了,哈哈,结帐了!!!