给你的程序增加热键(C#)
Form1.cs
private void Form1_Load(object sender, System.EventArgs e)
{
// 设置热键
SetHotKey(false, false, false,false,Keys.Space );
}
private bool key_Ctrl = false;
private bool key_Shift = false;
private bool key_Alt = false;
private bool key_Windows = false;
private Keys key_other;
public void SetHotKey(bool bCtrl,bool bShift,bool bAlt,bool bWindows,Keys nowKey)
{
try
{
this.key_Alt = bAlt;
this.key_Ctrl = bCtrl;
this.key_Shift = bShift;
this.key_Windows = bWindows;
this.key_other = nowKey;
WinHotKey.KeyModifiers modifier = WinHotKey.KeyModifiers.None;
if( this.key_Ctrl )
modifier |= WinHotKey.KeyModifiers.Control;
if(this.key_Alt )
modifier |= WinHotKey.KeyModifiers.Alt;
if(this.key_Shift)
modifier |= WinHotKey.KeyModifiers.Shift;
if(this.key_Windows)
modifier |= WinHotKey.KeyModifiers.Windows;
WinHotKey.RegisterHotKey(Handle,100,modifier,nowKey);
}
catch
{
MessageBox.Show ("快捷键定义错误!");
}
}
protected override void WndProc(ref Message msg )
{
const int WM_HOTKEY = 0x0312; // 热键消息
if (msg.Msg != WM_HOTKEY)
{
base.WndProc(ref msg);
}
else
{
MessageBox.Show("Hotkey pressed"); //激活热键
// ProcessHotKey();
}
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
WinHotKey.UnregisterHotKey(Handle, 100); // 注销热键
}
WinHotKey.cs
public class WinHotKey
{
public WinHotKey()
{
}
[DllImport("user32.dll",SetLastError=true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,
int id,
KeyModifiers fsModifiers,
Keys vk
);
[DllImport("user32.dll",SetLastError=true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,
int id
);
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Control =2,
Shift = 4,
Windows = 8
}
}
完整源码下载