转载自:http://blog.csdn.net/zlz_212/archive/2006/06/15/798603.aspx
要设置快捷键必须使用user32.dll下面的两个方法。
BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
和
BOOL UnregisterHotKey(
HWND hWnd,
int id
);
转换成C#代码,那么首先就要引用命名空间System.Runtime.InteropServices;来加载非托管类user32.dll。于是有了:
[DllImport("user32.dll", SetLastError=true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, // handle to window
int id, // hot key identifier
KeyModifiers fsModifiers, // key-modifier options
Keys vk // virtual-key code
);
[DllImport("user32.dll", SetLastError=true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, // handle to window
int id // hot key identifier
);
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
这是注册和卸载全局快捷键的方法,那么我们只需要在Form_Load的时候加上注册快捷键的语句,在FormClosing的时候卸载全局快捷键。同时,为了保证剪贴板的内容不受到其他程序调用剪贴板的干扰,在Form_Load的时候,我先将剪贴板里面的内容清空。
于是有了:
private void Form1_Load(object sender, System.EventArgs e)
{
label2.AutoSize = true;
Clipboard.Clear();//先清空剪贴板防止剪贴板里面先复制了其他内容
RegisterHotKey(Handle, 100, 0, Keys.F10);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
UnregisterHotKey(Handle, 100);//卸载快捷键
}
那么我们在别的窗口,怎么让按了快捷键以后调用我的主过程ProcessHotkey()呢?
那么我们就必须重写WndProc()方法,通过监视系统消息,来调用过程:
protected override void WndProc(ref Message m)//监视Windows消息
{
const int WM_HOTKEY = 0x0312;//按快捷键
switch (m.Msg)
{
case WM_HOTKEY:
ProcessHotkey();//调用主处理程序
break;
}
base.WndProc(ref m);
}
分享到:
相关推荐
在C# WinForm应用开发中,为用户界面添加快捷键功能可以提高软件的易用性和效率。本主题将深入探讨如何使用`KeyBoardHook`来实现全局快捷键的设置。`KeyBoardHook`是一个用于捕获键盘输入的类,允许你在程序运行时...
代码主要实现类似有道词典的软件设置中的自定义快捷键功能。 比如:当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中。
编程中Visual C#常用的快捷键编程中Visual C#常用的快捷键编程中Visual C#常用的快捷键编程中Visual C#常用的快捷键编程中Visual C#常用的快捷键
本篇将深入探讨如何在C#中设置热键快捷键,以及相关的重要知识点。 首先,我们需要了解的是Windows消息系统。在Windows操作系统中,所有的用户输入,包括键盘事件,都会被转化为消息发送到应用程序。因此,创建热键...
在C#编程中,全局快捷键(全局热键)是一种非常实用的功能,它允许用户通过预定义的按键组合在任何应用程序或系统环境下触发特定的操作。本示例将讲解如何在C#项目中实现一个全局快捷键,用于隐藏和显示窗体。首先,...
在C#编程中,设置快捷键和处理文件占用进程是两个重要的操作,它们对于提高应用程序的用户友好性和系统管理效率有着显著的作用。本资源包包含了关于这两个主题的详细讲解。 首先,我们来看“C#设置快捷键”的部分。...
或者在代码中设置: ```csharp MenuItem saveMenuItem = new MenuItem(); saveMenuItem.Header = "Save"; saveMenuItem.Command = ApplicationCommands.Save; KeyBinding keyBinding = new KeyBinding...
C#中的快捷键,方便你编写。里面有很多的关于C#的快捷键,你懂得!
"C#屏蔽Win下所有快捷键"这个项目旨在通过钩子(Hook)技术和注册表操作,实现对Windows操作系统中快捷键的屏蔽,类似于屏幕锁定程序的功能。这在某些场景下非常有用,比如防止未经授权的用户在系统被锁定时通过...
本文将深入探讨Visual C# 2005中的默认快捷键,这些快捷键来源于权威的MSDN Visual C#开发中心,旨在帮助开发者更快地掌握和利用这一强大的编程环境。 1. **基本编辑操作** - `Ctrl + C` 和 `Ctrl + V`:复制和...
本主题主要围绕"C#快捷键 vs vc快捷键",介绍这两个常用开发环境下的高效操作技巧。 首先,我们来看C#快捷键。C#是微软开发的一种面向对象的编程语言,广泛用于Windows应用程序、Web服务以及游戏开发。在Visual ...
C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全 C#.NETvs2005中快捷键大全
WinAPI中用于设置全局快捷键的主要函数是`RegisterHotKey`和`UnregisterHotKey`。`RegisterHotKey`用于注册快捷键,而`UnregisterHotKey`则用于注销不再使用的快捷键。这两个函数都需要一个窗口句柄(HWND)作为参数...
【C#快捷键大全(Visual C# 2005 全局快捷键大全)】 在Visual C# 2005中,快捷键是一种高效的工作方式,它可以帮助程序员快速执行各种常见操作,提高开发效率。以下是一些关键的全局快捷键: 1. 关系图.属性:Alt +...
### C# 编程环境中的快捷键大全解析 在C#编程环境中,使用快捷键能够极大地提高开发效率,简化操作流程。本文将详细介绍一系列常用的C#编程环境(如Visual Studio等)中的快捷键,帮助开发者更高效地进行代码编写、...
在C#窗体应用程序中,自定义快捷键可以极大地提高用户界面的交互性和效率。本文主要探讨如何在C#中创建并管理自定义的快捷键功能。首先,我们需要理解两个关键函数:`RegisterHotKey()` 和 `UnregisterHotKey()`,...
在本文中,我们将深入探讨如何使用C#编程语言来实现一个基本的记事本应用程序,同时集成快捷键功能,以提高用户使用的效率和便捷性。记事本是计算机操作系统中最基础的文字编辑工具,通常用于创建、查看和编辑纯文本...
在IT领域,C#是一种广泛使用的编程语言,尤其在Windows应用程序开发中占据重要地位。本教程将深入探讨如何使用C#来模拟键盘和鼠标操作,以及创建快捷键,以实现自动化和增强用户交互。 首先,模拟鼠标操作是通过...
C#屏蔽Windows快捷键及任务管理器 public delegate int HookProc(int nCode, int wParam, IntPtr lParam); private static int hHook = 0; public const int WH_KEYBOARD_LL = 13; //LowLevel键盘截获,如果是WH...