`

使用C#注册全局快捷键

阅读更多

天试了一下这个, 记录下来, 以后我给自己做小工具时, 肯定用的到.

 

注册/注销全局快捷键需要用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的工程.

分享到:
评论
2 楼 wjason 2009-10-15  
工具(Tray Friend):将任何程序,最小化到系统托盘

在我这篇blog中也有对一工具的使用。
1 楼 wjason 2009-05-08  
一定要覆写WndProc这个方法, 这次写的时候犯了这个错误....
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            Hotkey.ProcessHotKey(m);
        }

相关推荐

    c# windos 自定义全局快捷键

    本教程将聚焦于使用C#实现Windows全局快捷键,涉及的主要技术包括XML操作和WinAPI调用。 首先,我们需要理解什么是全局快捷键。全局快捷键,顾名思义,是在任何应用程序窗口或操作系统界面背景下都能响应的键盘组合...

    C# 全局快捷键定义 隐藏显示窗体

    在C#中,我们需要使用`RegisterHotKey`和`UnregisterHotKey`这两个API函数来注册和注销全局快捷键。`RegisterHotKey`函数用于设置快捷键,而`UnregisterHotKey`则用于在不再需要时移除该快捷键。这两个函数位于`...

    C# winform 设置快捷键

    本主题将深入探讨如何使用`KeyBoardHook`来实现全局快捷键的设置。`KeyBoardHook`是一个用于捕获键盘输入的类,允许你在程序运行时监听并响应特定的按键组合,即使焦点不在你的应用程序窗口上。 首先,理解“全局...

    C#全局快捷键定义 C#隐藏

    总的来说,定义和处理C#全局快捷键是提高用户体验的关键部分。通过合理地设计和实现,你可以为用户提供更加便捷的交互方式。同时,隐藏快捷键可以使得界面更加简洁,同时为熟悉快捷键的用户提供效率提升。

    c#快捷键大全(Visual C# 全局快捷键大全)

    【C#快捷键大全(Visual C# 2005 全局快捷键大全)】 在Visual C# 2005中,快捷键是一种高效的工作方式,它可以帮助程序员快速执行各种常见操作,提高开发效率。以下是一些关键的全局快捷键: 1. 关系图.属性:Alt +...

    C#键盘钩子实现全局快捷键.pdf

    在实现全局快捷键时,会利用此函数将自定义的钩子函数注册到系统中。 5. HookProc委托:这是一个钩子回调函数的委托类型。编写键盘钩子程序时,需要实现这个委托类型的回调函数来处理捕获到的键盘事件。 6. ...

    C#全局快捷键设置.rar

    C#全局快捷键设置.rar QQ:292258449

    C#屏蔽Win下所有快捷键

    C#中可以通过使用`SetWindowsHookEx`函数来设置全局钩子,捕获系统范围内的键盘事件。这个函数是Windows API的一部分,需要使用P/Invoke技术(Platform Invoke)来调用非托管代码。 1. **全局键盘钩子**:全局键盘...

    C#设置热键快捷键

    7. **高级热键使用**:除了基本的键盘事件,还可以利用`DllImport`导入Windows API函数,如`RegisterHotKey`和`UnregisterHotKey`来注册和注销全局热键。这种方式允许即使窗口不在焦点时也能响应热键,但需要处理更...

    C#全局热键(快捷键)设置.rar

    C#全局热键(快捷键)设置, 全局热键 单键和组合键的代码,本程序在Visual Studio 2017测试通过,代码里有详细注释.

    C#快捷键 vs vc快捷键

    本主题主要围绕"C#快捷键 vs vc快捷键",介绍这两个常用开发环境下的高效操作技巧。 首先,我们来看C#快捷键。C#是微软开发的一种面向对象的编程语言,广泛用于Windows应用程序、Web服务以及游戏开发。在Visual ...

    C# wpf 编写的自动关机 附带3个帮助类 运行后按全局快捷键ALT+T打开配置界面

    C# wpf 编写的自动关机 附带3个帮助类 运行后按全局快捷键ALT+T打开配置界面,默认是5点关机,程序隐藏在后台不在任务栏显示,到关机时间会强制弹出倒计时10秒的对话框,点“取消”按钮可取消关机并退出软件;...

    C# 设置应用程序的快捷键

    注意,全局快捷键需要正确管理钩子,确保在不再需要时卸载它,以避免资源泄漏。 3. **系统菜单快捷键**: Windows Forms的Form类提供了一个`SystemMenu`属性,可以用来修改系统菜单(如最小化、最大化和关闭按钮...

    C# 模拟键盘鼠标操作 快捷键

    在C#中,我们可以使用`SetWindowsHookEx`函数来安装一个全局鼠标钩子,从而捕获和处理鼠标事件。这通常涉及到`user32.dll`库中的API调用。例如,我们可以通过创建一个`HHOOK`类型的变量并将其与`SetWindowsHookEx`...

    c#快捷键整理(用于想熟悉c#快捷键的同仁下载)

    程序设计过程中快捷键的使用无疑会很大程度上提升程序编写的效率,掌握好快捷键的使用是程序设计爱好者的一大基本技能。本资源通过整理C#2008快捷键,可以清晰的了解c#快捷键全局,提升程序设计效率

    C#实现快捷键的几种常用方法汇总

    这种方法适用于全局快捷键的处理,可以覆盖窗体上的其他快捷键逻辑。 总结来说,C#提供了多种实现快捷键的方式,开发者可以根据具体需求灵活选择。无论是简单的Alt+*快捷键,还是复杂的组合键处理,或者是利用上...

    Java C# 开发工具快捷键 大全 所有

    在编程世界中,Java和C#是两种广泛使用的高级编程语言,它们有着强大的生态系统和丰富的开发工具。这些工具通常提供自定义快捷键功能,以提高程序员的效率和代码编写速度。快捷键大全对于任何开发者来说都是一份宝贵...

    C# WinForm中实现快捷键自定义设置实例

    项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中。 最终的效果如下图所示: 核心代码如下所示: 复制...

    C# VS2008快捷键

    ### C# VS2008快捷键详解 在软件开发过程中,提高开发效率是每个程序员追求的目标之一。Visual Studio 2008(简称VS2008)作为一款广泛使用的集成开发环境(IDE),提供了丰富的功能和强大的支持,尤其在C#语言编程...

Global site tag (gtag.js) - Google Analytics