unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
HotKeyId: array[0..12] of Integer; //热键数组, 这里准备定义 13 个热键
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
//注册热键
for i := Low(HotKeyId) to High(HotKeyId) do
HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i))); //热键命名可随意
RegisterHotKey(Handle,HotKeyId[0],0,VK_F2); //F2
RegisterHotKey(Handle,HotKeyId[1],0,VK_UP); //Up
RegisterHotKey(Handle,HotKeyId[2],0,VK_DOWN); //Down
RegisterHotKey(Handle,HotKeyId[3],0,VK_LEFT); //Left
RegisterHotKey(Handle,HotKeyId[4],0,VK_RIGHT); //Right
RegisterHotKey(Handle,HotKeyId[5],0,VK_PRIOR); //PageUp
RegisterHotKey(Handle,HotKeyId[6],0,VK_NEXT); //PageDown
RegisterHotKey(Handle,HotKeyId[7],0,VK_OEM_PLUS); //+
RegisterHotKey(Handle,HotKeyId[8],0,VK_OEM_MINUS); //-
RegisterHotKey(Handle,HotKeyId[9],0,$31); //1
RegisterHotKey(Handle,HotKeyId[10],0,$41); //a
RegisterHotKey(Handle,HotKeyId[11],0,VK_RETURN); //Enter
RegisterHotKey(Handle,HotKeyId[12],MOD_CONTROL,VK_RETURN); //Ctrl+Enter
end;
//热键
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = HotKeyId[0] then ShowMessage('F2');
if (Msg.HotKey=HotKeyId[1]) then ShowMessage('Up');
if (Msg.HotKey=HotKeyId[2]) then ShowMessage('Down');
if (Msg.HotKey=HotKeyId[3]) then ShowMessage('Left');
if (Msg.HotKey=HotKeyId[4]) then ShowMessage('Right');
if Msg.HotKey = HotKeyId[5] then ShowMessage('PageUp');
if Msg.HotKey = HotKeyId[6] then ShowMessage('PageDown');
if Msg.HotKey = HotKeyId[7] then ShowMessage('+');
if Msg.HotKey = HotKeyId[8] then ShowMessage('-');
if Msg.HotKey = HotKeyId[9] then ShowMessage('1');
if Msg.HotKey = HotKeyId[10] then ShowMessage('a');
if Msg.HotKey = HotKeyId[11] then ShowMessage('Enter');
if Msg.HotKey = HotKeyId[12] then ShowMessage('Ctrl+Enter');
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
//注销热键
for i := Low(HotKeyId) to High(HotKeyId) do
begin
UnRegisterHotKey(handle,HotKeyId[i]);
GlobalDeleteAtom(HotKeyId[i]);
end;
end;
end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!