代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
全局热键设置与窗体热键设置实例
作者:
天坤
/ 发布于
2016/10/19
/
634
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) { MessageBox.Show("我按了Control +Shift +Alt +S"); } } 2、全局热键设置 定义API函数 》 注册热键 》 卸载热键 我这里定义了AppHotKey类,全部代码如下: public class AppHotKey { [DllImport("kernel32.dll")] public static extern uint GetLastError(); //如果函数执行成功,返回值不为0。 //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 [DllImport("user32.dll", SetLastError = true)] public static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keys vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 } /// <summary> /// 注册热键 /// </summary> /// <param name="hwnd">窗口句柄</param> /// <param name="hotKey_id">热键ID</param> /// <param name="keyModifiers">组合键</param> /// <param name="key">热键</param> public static void RegKey(IntPtr hwnd, int hotKey_id, KeyModifiers keyModifiers, Keys key) { try { if (!RegisterHotKey(hwnd, hotKey_id, keyModifiers, key)) { if (Marshal.GetLastWin32Error() == 1409) { MessageBox.Show("热键被占用 !"); } else { MessageBox.Show("注册热键失败!"); } } } catch (Exception) { } } /// <summary> /// 注销热键 /// </summary> /// <param name="hwnd">窗口句柄</param> /// <param name="hotKey_id">热键ID</param> public static void UnRegKey(IntPtr hwnd, int hotKey_id) { //注销Id号为hotKey_id的热键设定 UnregisterHotKey(hwnd, hotKey_id); } } 重写窗体的WndProc函数,在窗口创建的时候注册热键,窗口销毁时销毁热键 private const int WM_HOTKEY = 0x312; //窗口消息-热键 private const int WM_CREATE = 0x1; //窗口消息-创建 private const int WM_DESTROY = 0x2; //窗口消息-销毁 private const int Space = 0x3572; //热键ID protected override void WndProc(ref Message m) { base.WndProc(ref m); switch (m.Msg) { case WM_HOTKEY: //窗口消息-热键ID switch (m.WParam.ToInt32()) { case Space: //热键ID MessageBox.Show("我按了Control +Shift +Alt +S"); break; default: break; } break; case WM_CREATE: //窗口消息-创建 AppHotKey.RegKey(Handle, Space, AppHotKey.KeyModifiers.Ctrl | AppHotKey.KeyModifiers.Shift | AppHotKey.KeyModifiers.Alt, Keys.S); break; case WM_DESTROY: //窗口消息-销毁 AppHotKey.UnRegKey(Handle, Space); //销毁热键 break; default: break; } }
试试其它关键字
同语言下
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
可能有用的
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
天坤
贡献的其它代码
(
11
)
.
iframe自适应高度
.
根据某年某周获取一周的日期
.
判空相关
.
将txt文件内容(以utf-8)存储到数据库中
.
遍历list、set和map集合的方式
.
全局热键设置与窗体热键设置实例
.
HttpOperater-模拟HTTP操作类
.
显示或是删除input域中的默认值
.
Http相关辅助类 HttpUtils
.
最小树形图(邻接阵形式)
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3