• 注册系统级热键


    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.
    
  • 相关阅读:
    多媒体开发之图像---帧与场的区别
    Python之Python 安装环境搭建
    c/c++ c的第一个编译器
    多媒体开发之 H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
    多媒体开发之h264中的sps---sps信息提取之帧率
    haproxy有关session的问题
    php的安装
    centos 6.5上部署jetty
    设置浏览器的颜色
    sed awk grep三剑客常用
  • 原文地址:https://www.cnblogs.com/del/p/976834.html
Copyright © 2020-2023  润新知