📄 main.pas
字号:
{********************************************************
*** ***
*** 破天惊工作室
*** 名称:个性热键演示
*** 日期:6.4.205
*** 环境:Delphi6+WinXP
*** 作者:破天惊
*** E-Mail:Tresss@sohu.com
*** HomePage:http://tresss.com
*** ***
*** *****************************************************}
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TFrmMain = class(TForm)
Lbl1: TLabel;
Timer1: TTimer;
BtnHot1: TButton;
BtnHot2: TButton;
procedure Timer1Timer(Sender: TObject);
procedure BtnHot1Click(Sender: TObject);
procedure BtnHot2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
TmpAtom:atom;
KeyUse:Boolean;
HotNum1,HotNum2:Integer;
procedure hotkey(var msg:TMessage);Message Wm_Hotkey;
public
{ Public declarations }
end;
var
FrmMain: TFrmMain;
implementation
{$R *.dfm}
Procedure TFrmMain.hotkey(var msg:TMessage);
Begin
If (Msg.LParamHi=Vk_F11) Then
Begin
if GetKeyState(Ord('F'))<0 then
Begin
Inc(HotNum1);
Lbl1.Caption:='你以第一种方式按过'+IntToStr(HotNum1)+'次热键';
End;
End;
End;
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;
procedure TFrmMain.BtnHot1Click(Sender: TObject);
begin
Timer1.Enabled:=False;
TmpAtom:=globaladdatom('hot key');
KeyUse:=registerhotkey(handle,TmpAtom,0,vk_f11);
Lbl1.Caption:='没有按过热键';
end;
procedure TFrmMain.BtnHot2Click(Sender: TObject);
begin
If KeyUse Then
Begin
UnregisterHotKey(Handle,TmpAtom);
GlobalDeleteAtom(TmpAtom);
End;
Timer1.Interval:=1;
Timer1.Enabled:=True;
Lbl1.Caption:='没有按过热键';
end;
procedure TFrmMain.FormDestroy(Sender: TObject);
begin
If KeyUse Then
Begin
UnregisterHotKey(Handle,TmpAtom);
GlobalDeleteAtom(TmpAtom);
End;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -