⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 用Delphi6写的演示在程序中如何设定富于个性的热键,例如F+J.
💻 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 + -