现在的软件种类繁多,数量惊人。所以如果想设成系统级的热键。我们就很难保证不与其它软件的热键冲突。 一般的软件都是Ctrl+shift+....或是Ctrl+....或Win+....之类的。下面我们试着定义一个f+j的热键。就是同时按下f和j两个字母来触发事件。 用RegisterHotKey是实现不了的。这里我们要用到的是一个Timer和一个GetKeyState()。 实现原理很简单。设定一个Interval为1的Timer不停的检测用户是否按下预定的两个键。如果附合条件,则触发你要实现的功能。 代码如下: procedure TFrmMain.Timer1Timer(Sender: TObject); begin Timer1.Interval:=1; if (GetKeyState(Ord('F'))<0) and (GetKeyState(Ord('J'))<0) then Begin Inc(HotNum2); Lbl1.Caption:='你已按过'+IntToStr(HotNum2)+'次热键'; Timer1.Interval:=100; //延时,防止事件触发过快; End; end;