天试了一下这个, 记录下来, 以后我给自己做小工具时, 肯定用的到.
注册/注销全局快捷键需要用user32.dll中的这两个api:
RegisterHotKey
UnregisterHotKey
所以使用C#注册全局快捷键就是要用C#调用user32.dll中的这两个函数,
问题1 C#调用dll
这其中涉及的问题有:
1.为了使用[DllImport("user32.dll")], 要先using System.Runtime.InteropServices;
2.import的函数要用static extern来修饰.
关于C#调用dll的介绍可以参考下面这几个链接:
在 C# 中通过 P/Invoke 调用Win32 DLL
Calling Win32 DLLs in C# with P/Invoke
这两个link一个是中文版, 一个是英文版, 还有代码示例可以下载. 其中还有个类型映射表, 比较有帮助.
这些都是基本类型, 指针的后面有说明.
Win32 Types
Specification
CLR Type
char, INT8, SBYTE, CHAR†|
8-bit signed integer |
System.SByte |
short, short int, INT16, SHORT |
16-bit signed integer |
System.Int16 |
int, long, long int, INT32, LONG32, BOOL†, INT |
32-bit signed integer |
System.Int32 |
__int64, INT64, LONGLONG |
64-bit signed integer |
System.Int64 |
unsigned char, UINT8, UCHAR†, BYTE |
8-bit unsigned integer |
System.Byte |
unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR†, __wchar_t |
16-bit unsigned integer |
System.UInt16 |
unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT |
32-bit unsigned integer |
System.UInt32 |
unsigned __int64, UINT64, DWORDLONG, ULONGLONG |
64-bit unsigned integer |
System.UInt64 |
float, FLOAT |
Single-precision floating point |
System.Single |
double, long double, DOUBLE |
Double-precision floating point |
System.Double |
†In
Win32 this type is an integer with a specially assigned meaning; in
contrast, the CLR provides a specific type devoted to this meaning. |
还有这几篇也不错
暴强贴:从.NET平台调用Win32 API
Platform Invoke Tutorial
问题2: 注册/注销全局快捷键
C#封装得真是很简单, 得到一个窗口的句柄只需要对Form调用this.Handle即可.
具体实现可以参考下面这两篇帖子:
C#注册全局热键
在c#中使用全局快捷键
附件是在第二个帖子基础上写的代码,他对dll中导入的api又做了一次封装, vs2008的工程.
分享到:
相关推荐
C#全局快捷键定义 C#隐藏 简单举例 C#全局快捷键定义 C#隐藏 简单举例
项目中摘取的利用全局快捷键显示和隐藏窗体的demo示例
winForm设置全局快捷键方式,提出KeyBoardHook管理。值得留意的是,这里注册的快捷键是全局的。在其它窗口点击快捷键,同样会触发事件。
NET 开发的全局快捷键程序 可以自定义快捷键 涉及知识 XML操作 WinApi
C#全局快捷键设置.rar QQ:292258449
C#全局热键(快捷键)设置, 全局热键 单键和组合键的代码,本程序在Visual Studio 2017测试通过,代码里有详细注释.
C#键盘钩子实现全局快捷键.pdf
全局快捷键、 HTML 设计器快捷键、XML 设计器快捷键、控件操作快捷键、调试快捷键、数据快捷键...
C# wpf 编写的自动关机 附带3个帮助类 运行后按全局快捷键ALT+T打开配置界面,默认是5点关机,程序隐藏在后台不在任务栏显示,到关机时间会强制弹出倒计时10秒的对话框,点“取消”按钮可取消关机并退出软件;...
.Net平台C#编程,用Hook和注册表来实现屏蔽用户Win下的快捷键,类似于屏幕锁定程序。
程序设计过程中快捷键的使用无疑会很大程度上提升程序编写的效率,掌握好快捷键的使用是程序设计爱好者的一大基本技能。本资源通过整理C#2008快捷键,可以清晰的了解c#快捷键全局,提升程序设计效率
c#下注册全局变量,快捷键,组合键。 using System; using System.Runtime.InteropServices;
1.Visual C# 2005 方案 -> 全局快捷键 2.Visual C# 2005 方案 -> HTML 设计器快捷键 3.Visual C# 2005 方案 -> XML 设计器快捷键 4.Visual C# 2005 方案 -> 控件操作快捷键 5.Visual C# 2005 方案 -> 调试快捷键
代码辅助工具(C#源码),事先设置好,就可以生成指定的注释模版,并在此软件加入全局的快捷键!
C#学习组合功能的好例子,主音量控制,带音量显示和输入控制,全局快捷键退出、显示隐藏窗口,程序单开
(2)当C#监听窗口隐藏时,也可以监听到键盘信息,还可以设置快捷键: (3)C#代码写作过程中,可做键盘交互,获取硬件的信号,使软件有序进行! (4)代码解析地址: ...
C#中也可以通过调用Win32 API安装和卸载钩子函数,实现基于钩子的特定功能。 本实例为通过C#屏蔽键盘、利用HOOK钩子屏蔽ctrl+alt+delete组合键的示例源码,可直接编译。 示例支持屏蔽按键、解除屏蔽。
C#制作的截图工具源码,带全局快捷键,方便实用
C#调用键盘钩子锁屏,禁用快捷键! C# .NET锁屏程序(顺带屏蔽任务管理器) 第一步:将窗体的FormBorderStyle设置为none,WindowState设为Maximized 占据整个屏幕。 第二步:使用钩子监控全局键盘事件。即屏蔽掉...