要定义一个全局热键,通常有三个步骤:     
  1、定义Windows的消息WM_HOTKEY的HOOK链,即

             procedure MyShortCut(Var Message:TMessage);Message WM_HOTKEY;         
  2、向Windows加入一个全局原子hotkey:GlobalAddAtom(’hotkey’),   并保留其句柄          
  3、向Windows登记热键链:   RegisterHotKey   函数原形如下     
    BOOL RegisterHotKey(     
              HWND   hWnd,        //   连接热键的窗口句柄     
              int   id,            //   全局原子句柄    
              UINT   fsModifiers,       //   热键修饰标志     
              UINT   vk           //   虚拟键盘码

              );     
  这里,fsModifiers是指虚拟键盘码vk结合何种键一起生成WM_HOTKEY的消息,它是下列三值的组合:          
    MOD_ALT      //   ALT   键必须按下
    MOD_CONTROL   //   CTRL   键必须按下    
    MOD_SHIFT     //   SHIFT   键必须按下    
  有了这些准备,你就可以定义自己喜欢的方式了。

  下面是一个范例,当CTRL+Q在任何时候被按下时,都会打出“你好,Crtl+Q被按下”的信息。     
  

type

    TForm1   =   class(TForm)

    procedure   FormCreate(Sender:   TObject);

    procedure   FormDestroy(Sender:   TObject);

    protected

    procedure   myshortcut(var   message:   TMessage);   message WM_HOTKEY;

    private

  { Private-Deklarationen   }

    public

  { Public-Deklarationen   }

  end;

  var

   Form1:   TForm1;

   id:Integer;

  implementation

    {$R   *.DFM}

  procedure   TForm1.myshortcut(var   message:   TMessage);

  begin

   ShowMessage(’你好,Crtl   +   Q   被按下’);

  end;

  procedure   TForm1.FormCreate(Sender: TObject);

  begin

    id:=GlobalAddAtom(’hotkey’);

    RegisterHotKey(Handle,id,MOD_CONTROL,88);     // 88是Q的ASCII值

  end;

  退出时候取消热键定义:

  procedure   TForm1.FormDestroy(Sender: TObject);

  begin

   UnRegisterHotKey(Handle,id);

  end;

delphi程序热键的更多相关文章

  1. delphi程序中定义热键

    delphi程序中定义热键   用到3个API函数          BOOL RegisterHotKey        (        HWND hWnd,        //响应该热键的窗口句 ...

  2. 一名Delphi程序员的开发习惯

    一名Delphi程序员的开发习惯 有关开发习惯的一些想法,如鲠在喉,不吐不快.究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些 建议,或者参考(希望不是误 ...

  3. Fastreport使用经验(转)在Delphi程序中访问报表对象

    Fastreport使用经验(转) 在Delphi程序中访问报表对象 最基本的方法就是frxReport1.FindObject. 然后把返回的对象强制转换成它的类型,当然,在报表中必须真的有这么个东 ...

  4. delphi 程序全屏显示无标题栏,覆盖整个屏幕

    delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 procedure TMainFrm.FormCreate(Sender: TObject); begin w ...

  5. 远程控制篇:在DELPHI程序中拨号上网

    用MODEM拨号上网,仍是大多数个人网民选择上网的方式.如果能在我们的应用程序中启动拨号连接(如IE浏览器程序中的自动拨号功能),无疑将会方便我们的软件用户(不用再切换应用程序,运行拨号网络),提高我 ...

  6. 问题-delphi 程序在某电脑中显示???问号 乱码

    问题现象:delphi 程序在某电脑中显示???问号 乱码 问题原因:因为语言的原因.不同的国家可能显示的编码不一样. 问题处理:“控制面板”>“区域和语言选项”>“区域选项”>“标 ...

  7. 让delphi程序不受WINDOWS日期格式的影响

    http://www.cnblogs.com/hnxxcxg/archive/2013/01/30/2882672.html 如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会 ...

  8. 让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application.UpdateFormatSettings)

    如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(S ...

  9. Delphi程序调用C#.Net编译的DLL并打开窗体(详解)

    Delphi程序调用C#.Net编译的DLL并打开窗体(详解)最近用C#.Net写了一个公用模块, 本以为仅提供给.Net程序使用, 但是领导要求把这些功能提供给旧系统使用, 天啦, 几套旧系统全是D ...

随机推荐

  1. [svc]Iaas Paas Saas区别

    https://www.zhihu.com/question/20387284

  2. Dos.ORM logo.Net轻量级开源ORM框架 Dos.ORM

    http://www.oschina.net/p/dos-orm http://www.oschina.net/project/lang/194/csharp http://www.cnblogs.c ...

  3. Spark踩坑记——数据库(Hbase+Mysql)转

    转自:http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库 ...

  4. nrm 的使用说明

    nrm -- NPM registry 管理工具 开发的npm registry 管理工具 nrm, 能够查看和切换当前使用的registry, 最近NPM经常 down 掉, 这个还是很有用的哈哈 ...

  5. 基于python的接口测试框架设计(三)接口测试的框架

    基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...

  6. ehcache 缓存管理工具

    ehcache  ehcache.xml <ehcache>   <diskStore path="java.io.tmpdir" />   <def ...

  7. DataTable某一列的最大值

    .datatable.compute("max(列名)","") eg:  int max_Idx_Number = 1;     int.TryParse(C ...

  8. 【Unity笔记】UGUI物体的Rect Transform组件(Pivot中心点,Anchor锚点)

    Pivot:自身中心点,图标是小蓝点.表示图片以哪个点来计算坐标值.默认在UI元素的几何中心点(0.5, 0,5). Anchor:锚点,图标是四个小三角形.表示该UI元素以父物体的哪个位置作为缩放参 ...

  9. 百度分享vue版-vshare

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...

  10. GB2312汉字区位码、交换码和机内码转换方法 (ZT)

    GB2312汉字区位码.交换码和机内码转换方法 (ZT) 为了适应计算机处理汉字信息的需要,1981年我国颁布了GB2312国家标准.该标准选出6763个常用汉字(其中,一级常用汉字3755个,二级汉 ...