在窗体不是焦点时设置全局快捷键
添加窗体以后,我们可以通过一系列事件给窗体添加快捷键
private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.B) { MessageBox.Show("B"); } }
这样当我们在按下"B"键时,就可以弹出对话框,但这种方法有一个弱点:窗体必须在获取焦点的情况下,按了才起作用。我们可以通过使用全局快捷键的方法来解决这个问题,也就是在任何时候按下,程序都会响应快捷键。
整体代码及使用方法如下:using System.Runtime.InteropServices; namespace hotkey { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.B) { MessageBox.Show("B"); } } HotKey hk = new HotKey(); private void Form1_Load(object sender, EventArgs e) { hk.Reg(Handle, 100, 1 | 2, Keys.G); } private void Form1_Leave(object sender, EventArgs e) { hk.UnReg(Handle, 100); } protected override void WndProc(ref Message m) { int HotKeyNum = hk.Handle(ref m); switch (HotKeyNum) { case 100: MessageBox.Show("按下了系统热键!"); break; } base.WndProc(ref m); } /// /// 注册系统快捷键 /// --------------说明------------------ /// 1、在窗体的Activated事件中写入如下代码: /// Reg(Handle, 100, 1 | 2, Keys.G); /// Alt = 1,Ctrl = 2,Shift = 4,WindowsKey = 8 /// 2、重写WndProc方法 /// protected override void WndProc(ref Message m) /// { /// int HotKeyNum = Handle(ref m); /// switch (HotKeyNum) /// { /// case 100: /// MessageBox.Show("HAHA"); /// break; /// } /// base.WndProc(ref m); /// } /// 3、在窗体的Leave事件中写入如下代码 /// UnReg(Handle, 100); /// ------------------------------------ /// public class HotKey { [DllImport("user32.dll", SetLastError = true)] static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) int fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keys vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); /// /// 注册系统快捷键 /// --------------说明------------------ /// 在 Form1_Activated 或 Load 事件中 /// Reg(Handle, 100, 1 | 2, Keys.G); /// Alt = 1,Ctrl = 2,Shift = 4,WindowsKey = 8 /// ------------------------------------ /// /// 写handle即可 /// 该快捷键的注册数字,如100 /// 辅助键如Ctrl,KeyModifiers中的一个 /// 与fsModifiers的组合键,如Keys.A /// public bool Reg(IntPtr hWnd, int id, int fzKeys, Keys vk) { return RegisterHotKey(hWnd, id, fzKeys, vk); } /// /// 注销系统快捷键 /// --------------说明------------------ /// 在 Form1_Leave 或 FormClosed 事件中 /// UnReg(Handle, 100); /// ------------------------------------ /// /// 写字handle即可 /// 该快捷键的数字,如100 /// public bool UnReg(IntPtr hWnd, int id) { return UnregisterHotKey(hWnd, id); } /// /// 得到快捷键的ID /// /// /// public int Handle(ref Message m) { const int WM_HOTKEY = 0x0312; //按快捷键 switch (m.Msg) { case WM_HOTKEY: return m.WParam.ToInt32(); } return 0; } } } }说明
在Form1_Load时,注册快捷键
//Handle照抄就行
//100是快捷键号,只要整个程序对得上就行。
//1|2这里我写的是按下ctrl和alt,这个在我程序中都有说明
//Alt = 1,Ctrl = 2,Shift = 4,WindowsKey = 8
//同时还得加上G键
hk.Reg(Handle, 100, 1 | 2, Keys.G);
在Form1_Leave时,注销
hk.UnReg(Handle, 100);
protected override void WndProc中根据热键号做不同任务运行调试会发现,按"B"键时弹出对话框只能在获取焦点时,或者说你得看得到窗体,还要点下它这时才行,而按ctrl+alt+G时,在任何情况下,都可以弹出对话框。我在本例中只是用对话框做了个例子,大家可以尝试做其它任务。
小朋友小朋友刊物于1922年4月6号正式诞生,距今已有100周年。新中国成立后,小朋友改于少年儿童出版社出版,它是我国少年儿童读物中出版时间最长的出版期数最多的刊物。小朋友杂志由著名文化
习酒并购听花酒概率大吗?自从习酒从贵州茅台分离出来,习酒一直在研究怎么上市问题,公司不断整合重组研究之中。研究是到证监会申请上市,还是收购上市或并购上市,达到尽快上市融资目的。其实有一个怪现象,习酒缺钱吗
世界杯14决赛,阿荷大战,阿根廷队有多大概率过关?随着世界杯八强全部产生,14决赛首轮即将展开较量,阿根廷队VS荷兰队!在这之前,荷兰队31战胜美国队,阿根廷队21战胜澳大利亚队,两队都是比较轻松的进入八强。那接下来,谁能闯进四强
赶紧收藏!缓解偏头痛最快的方法现代社会,由于生活工作压力大,很多人都处于亚健康状态,经常会出现各种不适,如情绪不稳定偏头痛颈肩腰痛等。特别是偏头痛,反复无常又折磨人。常见的原发性偏头痛诱发因素有家族遗传史的遗传
宝宝肠胀气不要慌!这8个解决方法了解下肠胀气是新生儿很常见的问题,3个月内正是宝宝肠胀气的高发期,比如宝宝肚子异常屁多肚子咕咕响频繁吃奶大便带泡泡,出现黄昏闹等都是肠胀气的表现,妈妈们一定要提前做好功课,正确护理才行!
新手爸妈012个月的宝宝怎么吃?听听育儿专家怎么说红网时刻新闻12月8日讯(通讯员刘赞丽)母乳是最天然的食物,6月龄以内宝宝建议纯母乳喂养,如果母乳不够时,使用婴儿配方奶,除维生素D等营养剂补充外,不需要额外再喂水,不管是母乳,还
女孩数学好,还得看天赋?错,幼儿园起培养数学脑才是关键大家好,我是红红很多家长会发现,孩子上学以后,最容易拉开差距的学科就是数学,尤其是到了初中高中,这种情况会更明显。而且,因为数学是理科的基础,数学差的孩子,理化生三科的学习也大都非
早教素材幼儿简笔画涂色350张早教素材幼儿简笔画涂色素材350张孩子早教必备素材,看似简单,但是十分考验孩子的耐心和仔细!在孩子绘画启蒙阶段,宝宝的涂色和色彩也是需要训练的,赶快让孩子涂起来吧!有对照颜色参考,
盘点那些甜的不要不要的韩剧这个冬天一起回温一遍可好?入冬了就格外的冷了,迫切需要点精神食粮补给一下,这时候来部韩剧就十分完美了!那些年追了一遍又一遍的韩剧,敢不敢再翻出来回温一遍?想想那画面,来一杯热饮,再来一堆零食,躺在被窝里面追
喝热水比冷水更健康?不一定作为全世界最喜欢喝热水的国家,很多人对多喝热水有着自己的执念。关于喝热水,很多人认为水温越高越好,尤其是在秋冬季节。从科学的角度来说,多喝热水真的更健康吗?实际上,温度过高的热水,
每日元速递丨北京出台数字经济条例Forever21首推元宇宙时装01。腾讯QQ音乐携手仙剑奇侠传再次发行数字藏品QQ音乐携手仙剑奇侠传官方推出系列音乐数字藏品,以复古数字磁带的方式限量发行。据介绍,该系列磁带重制了李逍遥赵灵儿和彩依的三首剧情曲