如题,钩子需要用DLL,觉得麻烦,不想程序带个DLL。。如何全局判断回车是否被按下呢??

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure MyMsg(var Msg: TMsg; var Handled: Boolean);  public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := MyMsg;
    end;procedure TForm1.MyMsg(var Msg: TMsg; var Handled: Boolean);
    begin
      if Msg.message = WM_KEYDOWN then
      begin
        if Msg.WParam = VK_RETURN then
          ShowMessage('你按下了回车键');
      end;
    end;end.
      

  2.   

    if GetAsyncKeyState(13)=-32767 then
          按下[Enter]GetAsyncKeyState,用这个函数写出来的东西会会经常被安全软件报病毒的。
      

  3.   

    看你的需求。如果你想在任何时候都能捕捉到,你必须用钩子或者ring0级别的汇编指令。那就比较复杂了。如果只是在程序内部使用做个控件之类的,你完全可以通过键盘消息来判断。