天天看點

csdn代碼

如果隻用了DELPHI自帶的一般控件,那麼不需要其他動态連接配接庫,不選中project菜單的option下面builder with runtime packages,系統會将所有需要的BPL檔案包含到編譯後的EXE裡面去

//檢查檔案是否打開

if FileExists(FileName) then

    if (FileOpen(FileName, fmShareExclusive) < 0) then

      ShowMessage('檔案已打開');

//建立全局的滑鼠鈎子

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure Button2Click(Sender: TObject);

  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

  if(peventmsg(lparam)^.message = WM_LBUTTONDOWN) Or

    (peventmsg(lparam)^.message = WM_LBUTTONUP) Or

    (peventmsg(lparam)^.message = WM_LBUTTONDBLCLK) Or

    (peventmsg(lparam)^.message = WM_MOUSEMOVE) 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.Button1Click(Sender: TObject);

begin

  Hook;

end;

procedure TForm1.Hook(En: Boolean);

begin

  if En then

    hHook := SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0)

  else

    UnHookWindowsHookEx(hHook);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  Hook(false);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 Hook(false);

end;

end.

繼續閱讀