全局热键



Demo下载:https://git.oschina.net/xieyimo9/quanjurejian.git


  • 主要代码:
  • procedure TForm1.HotKey(var msg: TMessage);
    begin
      if msg.WParam =FHotKeyId_Alt_Down then
        Memo1.Lines.Add(‘Alt Down‘)
      else if msg.WParam =FHotKeyId_Alt_Up then
        Memo1.Lines.Add(‘Alt Up‘)
      else if msg.WParam =FHotKeyId_Ctrl_F12 then
        Memo1.Lines.Add(‘Ctrl + F12‘);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FHotKeyId_Alt_Down := GlobalAddAtom(‘MyHotKey_Alt_Down‘); { 全局热键ID }
      RegisterHotKey(Self.Handle, FHotKeyId_Alt_Down, MOD_ALT, VK_MENU); { 注册全局热键 Alt Down }
      FHotKeyId_Alt_Up := GlobalAddAtom(‘MyHotKey_Alt_Up‘); { 全局热键ID }
      RegisterHotKey(Self.Handle, FHotKeyId_Alt_Up, MOD_ALT, 0); { 注册全局热键 Alt Up }
      FHotKeyId_Ctrl_F12 := GlobalAddAtom(‘MyHotKeyCtrl_F12‘); { 全局热键ID }
      RegisterHotKey(Self.Handle, FHotKeyId_Ctrl_F12, MOD_CONTROL, VK_F12); { 注册全局热键 Ctrl + F12 }
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnregisterHotKey(Handle, FHotKeyId_Alt_Down); { 反注册全局热键 }
      GlobalDeleteAtom(FHotKeyId_Alt_Down);
      UnregisterHotKey(Handle, FHotKeyId_Alt_Up); { 反注册全局热键 }
      GlobalDeleteAtom(FHotKeyId_Alt_Up);
      UnregisterHotKey(Handle, FHotKeyId_Ctrl_F12); { 反注册全局热键 }
      GlobalDeleteAtom(FHotKeyId_Ctrl_F12);
    end;


全局热键

时间: 2024-10-12 11:53:46

全局热键的相关文章

;徐晓亮的跟随电脑启动的AutoHotkey全局热键和热字串脚本

/*;------------------------------------------------------------[重要提示]在SciTE或者EmEditor中按热键Ctrl+G -> 150 -> Enter跳转到热键定义处①立即升级杀毒软件病毒库②用pft.exe个人文件转移工具转移文件夹到非系统盘D:盘(pft.exe文件来自于一键Ghost硬盘版C:\dosh\ghos\pft.exe)③通过Total Commander的工具栏来正确的新建和打开文件和文件夹(养成只在36

Qt 5.x 全局热键 for windows

Qt 升级到5.x版本后,QAbstractEventDispatcher中函数发生变动,导致libqxt库中的qxtGlobalShortcut挂掉.参考qxtGlobalShortcut写了一个全局热键类,用法与qxtGlobalShortcut一致.在 Win8.1 + Qt 5.11 能正常使用 _______________________________________________________________________   用法 ____________________

QT全局热键(用nativeKeycode封装API,不跨平台)

在网上找了很长时间,大家都提到了一个QT全局热键库(qxtglobalshortcut),支持跨平台.在这篇文章中,我将只展示出windows平台下全局热键的设置. 这里提供的方法是在MyGlobalShortCut里面完成Windows的API封装,并在main.cpp中使用. 直接上代码: MyWinEventFilter类: class MyWinEventFilter :public QAbstractNativeEventFilter { public: MyWinEventFilte

Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)

转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个是Windows篇,就说明这些代码只支持windows系统.同时,也说明肯定还有其他平台的要写.不过要等O(∩_∩)O~ 在Qt要调用Windows的API其实很简单,只要在需要用到的头文件中添加#include <window

Qt全局热键(windows篇)

Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个是Windows篇,就说明这些代码只支持windows系统.同时,也说明肯定还有其他平台的要写.不过要等O(∩_∩)O~ 在Qt要调用Windows的API其实很简单,只要在需要用到的头文件中添加#include <windows.h>即可.不过要注意,Qt仅支持win32的API,像MFC之类的是不

C# 全局热键设置 与 窗体热键设置

1. 窗体热键 首先要设置主窗体KeyPreview为true,可直接在属性中进行设置, 或者在窗体加载中设置: this.KeyPreview = true; 然后添加窗体KeyDown事件,如下: private void FrmMain_KeyDown(object sender, KeyEventArgs e) { if (e.Alt && e.Shift && e.Control && e.KeyCode == Keys.S) { MessageB

Java设置全局热键——第三方包jintellitype实现

Java原生API并不支持为应用程序设置全局热键.要实现全局热键,需要用JNI方式实现,这就涉及到编写C/C++代码,这对于大多数不熟悉C/C++的javaer来说,有点困难.不过幸好,国外有人已经实现了,发布成第三方java包,借此,我们可以很方便的设置全局热键而不用编写任何C/C++代码. jintellitype官网貌似目前访问不到,这里提供下载:http://pan.baidu.com/s/1kTIDxgN. 我实现的演示Demo源码下载:http://pan.baidu.com/s/1

Qt5全局热键-QxtGlobalShortcut

最近做一个项目需要注册全局热键,在网上搜索发现有个第三方库 libqxt 中给出一个比较好的跨平台的解决方案,就是 QxtGlobalShortcut. 但是编译过程中发现这个库用到的QAbstractEventDispatcher::EventFilter在qt5.3.1中已经没了,所以我就自己改写了一下. 更改部分如下: 在QxtGlobalShortcutPrivate类的前面添加如下代码,因为在qt5中需要用到QAbstractNativeEventFilter这个类 源文章地址http

使用WinAPI全局热键注册和全局模拟按键

一.全局热键注册 1.先引用DLL [System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI public static extern bool RegisterHotKey( //设置热键 IntPtr hWnd, // 窗口句柄,一般使用Handle属性 int id, // 区别热键的ID号,这个可以随便写,只是用来区分不同热键 uint fsModifiers, // 修正键用户接下哪些键是发生 可能