给窗口设置系统级或窗口级的热键
开发环境:VS2005, C#语言
为了给一个程序加一个系统级的热键,在开发时需要使用到下面的代码,就是在程序中注册和卸载热键。
1。首先在Form1类的函数中添加如下代码:
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, Keys vk);
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
注意,使用上面的代码前,必须使用"using System.Runtime.InteropServices;"来引入命名空间。
2。在Form1的构造函数中注册热键:
public Form1()
{
RegisterHotKey(Handle, 100, 0, Keys.Escape); //注册热键: Esc
}
3. 重写窗口的WndProc函数:
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x312)
{
if (m.WParam.ToInt32() == 100)
this.Close(); //当按下Esc键时关闭本窗口
}
base.WndProc(ref m);
}
4。在析构函数中卸载热键:
~Form1()
{
UnregisterHotKey(Handle, 100); //窗口未激活时卸载热键
}
这样就完成了我们的所有设置。但是这个添加的热键是系统级热键,也就是说不管这个窗口有没有被激活,这个热键都是能起作用的。
但是有时我们并不希望这种热键是系统级的,而是希望当前窗口被激活时,该热键才起作用,如果没有被激活,该热键不起作用。于是,我想了办法,就是更改热键注册和卸载的时间。
思路:在Form1的Form1_Activated事件中注册热键,在Form1_Deactivate中卸载热键,其他不变,代码如下:
private void Form1_Activated(object sender, EventArgs e)
{
RegisterHotKey(Handle, 100, 0, Keys.Escape); //在窗口激活时注册热键: Esc
}
private void Form1_Deactivate(object sender, EventArgs e)
{
UnregisterHotKey(Handle, 100); //窗口未激活时卸载热键
}
这样就达到了窗口级的热键。
根据同样的思路,你可以选择其他的时机来注册或卸载热键!
给窗口设置系统级或窗口级的热键相关推荐
- Android添加系统级顶层窗口 和 WindowManager添加view的动画问题
当Dialog有编辑框时如果选择会弹菜单窗口就不要用 Context applicationContext = mainActivity.getApplicationContext(); AlertD ...
- RegisterHotKey设置系统级热键《转》
BOOL RegisterHotKey( HWND hWnd, //响应该热键的窗口句柄 Int id, //该热键的唯一标识 ...
- win7计算机文件夹折叠,win7系统折叠组窗口设置不折叠的操作方法
很多小伙伴都遇到过对win7系统折叠组窗口设置不折叠进行设置的困惑吧,一些朋友看过网上对win7系统折叠组窗口设置不折叠设置的零散处理方法,并没有完完全全明白win7系统折叠组窗口设置不折叠是如何设置 ...
- 最大化窗口设置_BetterTouchTool的几个实用设置
调节屏幕色温 下载nshift(一个exec文件),并将其移动到 /usr/local/bin 中. Execute Terminal Command: /usr/local/bin/nshift 0 ...
- 《ANSYS Workbench有限元分析实例详解(静力学)》——第2章 ANSYS Workbench主界面设置2.1 窗口设置...
本节书摘来自异步社区<ANSYS Workbench有限元分析实例详解(静力学)>一书中的第2章,第2.1节,作者: 周炬 , 苏金英 更多章节内容可以访问云栖社区"异步社区&q ...
- 计算机窗口还原,win8系统找回计算机窗口“回收站”的还原办法
随着我们电脑上安装的程序越来越多就会出现win8系统找回计算机窗口"回收站"的情况,如果我们遇见win8系统找回计算机窗口"回收站"的问题只能想方设法解决它,用 ...
- 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
文章目录 一.导入 OpenGL 的两个头文件 二.链接 OpenGL 库 三.将 Windows 桌面窗口改成 OpenGL 窗口 四.获取窗口设备 五.设置像素格式描述符 六.设置像素格式 七.创 ...
- Linux学习笔记(三):系统运行级与运行级的切换
1.Linux系统与其他的操作系统不同,它设有运行级别.该运行级指定操作系统所处的状态.Linux系统在任何时候都运行于某个运行级上,且在不同的运行级上运行的程序和服务都不同,所要完成的工作和所要达到 ...
- vector 设置大小_BetterSnapTool for Mac(窗口设置工具) v1.9.3
BetterSnapTool for mac版是一款在国内非常受欢迎的窗口管理软件,这款软件可以让你轻松调整桌面上窗口的大小和位置,你可以将其拖动到屏幕上的任何一个位置,这样可以让你像是用window ...
最新文章
- java获取date的时分秒_Java 之 Date 获取 年月日时分秒
- 使用Visual Studio 2008 进行远程调试
- vmware下/mnt/hgfs下为空的问题
- c语言程序设保安值班,保安值班系统
- Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】
- pythonencode和decode_Python3的decode()与encode()
- chart.js x轴显示不全_机床大讲堂第67讲——基于FANUC系统的数控铣床增加第四轴的方法...
- mos 控制交流_小米智能排插的220V交流电压信号的开关控制电路设计
- php实现access数据库连接,PHP实现Access数据库连接
- 为什么同样是200M宽带,移动可以不要钱,联通却要1000多?
- web1:http协议简介和用netassist和py程序当http服务器
- 10个Excel VBA实例教程-刘欢-专题视频课程
- 基因组注释2. 非编码基因和编码基因预测tRNAScan-SE、rRNAmmer和Prodigal
- html设计渐变背景,HTML网页设计之div渐变背景色
- 2021计算机夏令营保研经历(中科院计算所,南京大学人工智能学院等)
- 便捷缴费 支付 (一)
- 俄罗斯方块游戏开发教程7:消除判断和处理
- ubuntu下安装Google谷歌浏览器(64位系统)
- OpenCV 2 计算机视觉编程手册
- Druid监控页面配置reset-enable的说明
热门文章
- 八皇后问题(回溯法)
- 高级Python:定义类时要应用的9种最佳做法
- 计算机公开课教学反思,语文公开课教学反思
- 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
- leetcode 493. 翻转对(分治算法)
- leetcode329. 矩阵中的最长递增路径(dfs)
- vuejs 轮播_如何在VueJS中设计和构建轮播功能
- 管理员所有权代码_为什么代码所有权糟透了,您永远不应该在有实践的地方工作...
- sublime text 3安装及使用
- Python学习笔记19(算法)