首页 > 其他分享 >注册系统级热键

注册系统级热键

时间:2023-05-13 14:23:03浏览次数:28  
标签:RegisterHotKey Handle 热键 系统 HotKey HotKeyId 注册 Msg ShowMessage

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.

标签:RegisterHotKey,Handle,热键,系统,HotKey,HotKeyId,注册,Msg,ShowMessage
From: https://www.cnblogs.com/lucken2000/p/17397311.html

相关文章

  • windows系统为硬件保留的内存如何解决?
    这个问题在win7、win10、win11上都存在,但win10很明显更多,操作系统里边win10幺蛾子最多。为硬件保留的内存,是系统自己确定的,大多数时候无法人工调节,少数情况msconfig能够调节。正常的保留数量几十M几百M,要是大于500M一般用户都不大高兴了。如果保留的内存容量正好是一根内存......
  • 如何利用NTSETUP安装系统
    用NTSETUP装系统此教程适用于安装WindowsVista以上系统。目录用NTSETUP装系统下载启动和安装下载https://pan.huang1111.cn/s/1gKzuv启动和安装选择下载的镜像和引导驱动器镜像可以选择ISO镜像下\source\boot.wim或\source\install.wim,也可以直接选择ISO镜像,他会挂载......
  • Ubuntu系统下python模块graphviz运行报错:graphviz.backend.execute.ExecutableNotFoun
    代码中需要运行python模块graphviz,安装:pipinstallgraphviz 运行后报错:graphviz.backend.execute.ExecutableNotFound:failedtoexecutePosixPath('dot'),makesuretheGraphvizexecutablesareonyoursystems'PATH  报错的全部信息:Traceback(mostrecentc......
  • linux 系统中查看总内存、总硬盘、总逻辑CPU数目
     001、总内存[root@PC1test]#free-htotalusedfreesharedbuff/cacheavailableMem:3.7G830M1.8G38M1.1G2.5GSwap:3.9G0B3.9G  002、......
  • MCGS昆仑通态触摸屏与2台三菱变频器多段速控制系统可直接应用与现场的控制系统。
    MCGS昆仑通态触摸屏与2台三菱变频器多段速控制系统可直接应用与现场的控制系统。目标:通过MCGS昆仑通态触摸屏与三菱变频器进行直接通讯,进行2台三菱变频器多段速定时调速控制。配件:MCGS昆仑通态触摸屏TPC7062KD,2台三菱e740变频器。功能:通过触摸屏界面设定每台多段速工艺,然后按设定......
  • java基于springboot+vue的农机电招平台、农机租赁管理系统,附源码+数据库+文档+PPT,适合
    1、项目介绍该系统包括前台操作和后台管理两个部分,一方面,为用户提供首页,农机,系统公告,个人中心,后台管理等功能;另一方面,为管理员提供首页,个人中心,农机机主管理,使用者管理,农机类型管理,农机管理,农机预约管理,系统管理等功能。项目获取,看这里2、技术框架编程语言:java系统架构:B/S......
  • 分布式系统常见问题
    一.概述分布式系统存在网络,时钟,以及许多不可预测的故障。分布式事务,一致性与共识问题,迄今为止仍没有得到很好的解决方案。要想完美地解决分布式系统中的问题不太可能,但是实践中应对特定问题仍有许多可靠的解决方案。本文不会谈及诸如BASE,CAP,ACID等空泛的理论,只基于实践中遇......
  • 箱式无负压供水图纸程序一拖二 西门子 1.箱式无负压供水系统
    箱式无负压供水图纸程序一拖二西门子1.箱式无负压供水系统,采用西门子S7-200smartPLC,西门子触摸屏;2.一拖二,加一台增压泵,市政压力低时,开启增压泵补水,市政压力正常时,关闭增压泵;3.采用循环软启功能,PID控制,恒压更稳定,界面更高端;4.并且有CAD柜体制作图纸,CAD电气图纸,图纸清晰,规范;5.......
  • 西门子1200博图程序冷却油泵PID控制系统,和多台油泵及水泵G120西门子变频器Modbud RTU
    西门子1200博图程序冷却油泵PID控制系统,和多台油泵及水泵G120西门子变频器ModbudRTU通讯,画面采用西门子KTP700触摸屏,内有变频器参数/Modbus通讯报文详细讲解,PID带手动自动功能,可手动调节PID,注释详细,有图纸,打开版本V14及以上ID:536675484811201......
  • 运动控制,数控系统所需要的各种插补以及加减速的文献 用FPGA开发了款类似MCX314跟pcl6
    运动控制,数控系统所需要的各种插补以及加减速的文献用FPGA开发了款类似MCX314跟pcl6045的运动控制IC,在开发的过程中,大量参考了文献.现在将这些文献出,可以缩短你的开发时间.整个资料压缩后有1G大小,ID:76200520666075042......