zoukankan      html  css  js  c++  java
  • delphi程序热键

    要定义一个全局热键,通常有三个步骤:     
      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;

  • 相关阅读:
    Tomcat 容器的安全认证和鉴权
    Tomcat 中的 Session 和 Cookie
    Tomcat 类加载器的实现
    Tomcat 对静态资源的处理
    Tomcat 路由请求的实现 Mapper
    Tomcat 配置文件解析工具 Digester
    Tomcat 容器的设计和实现
    ArrayList 和 LinkedList 源码分析
    Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案!
    Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!
  • 原文地址:https://www.cnblogs.com/shijiaoyun/p/4182140.html
Copyright © 2011-2022 走看看