全局快捷键
来源:互联网 发布:二战日本伊斯兰知乎 编辑:程序博客网 时间:2024/06/10 03:49
新建一个SystemHotKey类
using System;using System.Runtime.InteropServices;using System.Windows.Forms;namespace SystemHotKey{ public delegate void HotkeyEventHandler(int HotKeyID); public class Hotkey : System.Windows.Forms.IMessageFilter { System.Collections.Hashtable keyIDs = new System.Collections.Hashtable(); IntPtr hWnd; public event HotkeyEventHandler OnHotkey; public enum KeyFlags { MOD_NULL = 0x0, MOD_ALT = 0x1, MOD_CONTROL = 0x2, MOD_SHIFT = 0x4, MOD_WIN = 0x8 } [DllImport("user32.dll")] public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); [DllImport("user32.dll")] public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id); [DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); [DllImport("kernel32.dll")] public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); public Hotkey(IntPtr hWnd) { this.hWnd = hWnd; System.Windows.Forms.Application.AddMessageFilter(this); } public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags) { UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString()); RegisterHotKey((IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key); keyIDs.Add(hotkeyid, hotkeyid); return (int)hotkeyid; } public void UnregisterHotkeys() { System.Windows.Forms.Application.RemoveMessageFilter(this); foreach (UInt32 key in keyIDs.Values) { UnregisterHotKey(hWnd, key); GlobalDeleteAtom(key); } } public bool PreFilterMessage(ref System.Windows.Forms.Message m) { if (m.Msg == 0x312) { if (OnHotkey != null) { foreach (UInt32 key in keyIDs.Values) { if ((UInt32)m.WParam == key) { OnHotkey((int)m.WParam); return true; } } } } return false; } }}
用法如下
定义一个Hotkey1全局变量
private int Hotkey1;
FormLoad事件里面写:
Hotkey hotkey;
hotkey = new Hotkey(this.Handle);
Hotkey1 = hotkey.RegisterHotkey(Keys.Enter, Hotkey.KeyFlags.MOD_NULL);
hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey);
写OnHotkey事件
public void OnHotkey(int HotkeyID)
{
if (HotkeyID == Hotkey1)
{
MessageBox.Show("Enter");
}
}
- 全局快捷键
- 设置全局快捷键
- 设置全局快捷键
- .Net 定义全局快捷键
- c#注册全局快捷键
- c# 全局快捷键
- swt 全局快捷键
- linux的全局快捷键
- 自定义全局快捷键
- Delphi使用全局快捷键
- delphi程序全局快捷键
- java全局快捷键
- PHPStrom全局搜索快捷键
- windows 设置全局快捷键;
- MFC注册全局快捷键
- eclipse全局搜索快捷键
- 【QT】全局快捷键
- Visual Studio.Net 快捷键表“全局”快捷键
- oracle wm_concat函数,用于列转行,逗号分隔
- 开源ImageFilter库v0.3:新增22种图片效果
- 常见的数据库基础面试题大全
- android抗锯齿的几个方法
- Linux内核中读写文件/设备的实现方法
- 全局快捷键
- Mahout聚类分析
- 认知和设计 理解UI设计准则
- Ado操作excel表格实现成绩计算及统计
- xsd wsdl2h soapcpp2命令行
- : memset 方法使用
- vsftpd 3.0 源码安装
- HDU 2674 N! Again
- 分享一个asp.net Cookie操作类