网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
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
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
实现系统热键盘注册的类.
作者:
zgke
/ 发布于
2014/7/29
/
813
使用方法 private RegisterHotKeyClass _RegisKey = new RegisterHotKeyClass(); private void Form2_Load(object sender, EventArgs e) { _RegisKey.Keys = Keys.Q; _RegisKey.ModKey = RegisterHotKeyClass.MODKEY.MOD_CONTROL | RegisterHotKeyClass.MODKEY.MOD_ALT; _RegisKey.WindowHandle = this.Handle; _RegisKey.HotKey += new RegisterHotKeyClass.HotKeyPass(_Regis_HotKey); _RegisKey.StarHotKey(); } void _Regis_HotKey() { MessageBox.Show("ok"); } 这里注册的是 CTRL+ALT+Q 下面是全部的类 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Zgke.SysInfo { /// <summary> /// 系统热键注册 /// zgke@sina.com /// qq 116149 /// </summary> public class RegisterHotKeyClass { private IntPtr m_WindowHandle = IntPtr.Zero; private MODKEY m_ModKey = MODKEY.MOD_CONTROL; private Keys m_Keys = Keys.A; private int m_WParam = 10000; private bool Star = false; private HotKeyWndProc m_HotKeyWnd = new HotKeyWndProc(); public IntPtr WindowHandle { get { return m_WindowHandle; } set { if (Star)return; m_WindowHandle = value; } } public MODKEY ModKey { get { return m_ModKey; } set { if (Star)return; m_ModKey = value; } } public Keys Keys { get { return m_Keys; } set { if (Star)return; m_Keys = value; } } public int WParam { get { return m_WParam; } set { if (Star)return; m_WParam = value; } } public void StarHotKey() { if (m_WindowHandle != IntPtr.Zero) { if (!RegisterHotKey(m_WindowHandle, m_WParam, m_ModKey, m_Keys)) { throw new Exception("注册失败!"); } try { m_HotKeyWnd.m_HotKeyPass = new HotKeyPass(KeyPass); m_HotKeyWnd.m_WParam = m_WParam; m_HotKeyWnd.AssignHandle(m_WindowHandle); Star = true; } catch { StopHotKey(); } } } private void KeyPass() { if (HotKey != null) HotKey(); } public void StopHotKey() { if (Star) { if (!UnregisterHotKey(m_WindowHandle, m_WParam)) { throw new Exception("卸载失败!"); } Star = false; m_HotKeyWnd.ReleaseHandle(); } } public delegate void HotKeyPass(); public event HotKeyPass HotKey; private class HotKeyWndProc : NativeWindow { public int m_WParam = 10000; public HotKeyPass m_HotKeyPass; protected override void WndProc(ref Message m) { if (m.Msg == 0x0312 && m.WParam.ToInt32() == m_WParam) { if (m_HotKeyPass != null) m_HotKeyPass.Invoke(); } base.WndProc(ref m); } } public enum MODKEY { MOD_ALT = 0x0001, MOD_CONTROL = 0x0002, MOD_SHIFT = 0x0004, MOD_WIN = 0x0008, } [DllImport("user32.dll")] public static extern bool RegisterHotKey(IntPtr wnd, int id, MODKEY mode, Keys vk); [DllImport("user32.dll")] public static extern bool UnregisterHotKey(IntPtr wnd, int id); } }
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
热键
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
zgke
贡献的其它代码
(
46
)
.
让程序只保证一个进程的类
.
获取PictureBox的SizeMode为Zoom图形的大小
.
获取RICHTEXTBOX所有图形的位置和大小
.
实现系统热键盘注册的类.
.
操作CUR的类
.
读写 Photoshop PSD文件 操作类
.
获取系统鼠标指针
.
隐藏滚动条
.
实现BCD码
.
获取EXCEL所有表名
地图
本站
我们
服务
版权
联系
回馈
博客