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

📄 unit2.pas

📁 通过delphi源码介绍给你如果实现焦点不在的热键响应
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    {热键标识ID}     
    id:   Integer;
    procedure   WMHotKey(var   Msg   :   TWMHotKey);   message   WM_HOTKEY;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
  const RSP_SIMPLE_SERVICE = 1;
  //function RegisterServiceProcess(dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL';
{$R *.dfm}

{捕获热键消息}     
procedure   TForm1.WMHotKey   (var   Msg   :   TWMHotKey);
begin
  if   msg.HotKey   =   id   then
  ShowMessage('Ctrl+Alt+R键被按下!');
  form1.Visible   :=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
Const     
  {ALT、CTRL和R键的虚拟键值}     
  MOD_ALT   =   1;     
  MOD_CONTROL   =   2;
  VK_R   =   82;     
begin
  {首先判断程序是否已经运行}     
  if   GlobalFindAtom('MyHotkey')   =   0   then
  begin     
  {注册全局热键Ctrl   +   Alt   +   R}
  id:=GlobalAddAtom('MyHotkey');     
  RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R);     
  end     
  else     
  halt;     
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnRegisterHotKey(handle,id);
  GlobalDeleteAtom(id);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  //RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE);
  form1.Hide;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -