WinForm 如何注册热键?
2007-11-15 00:57
417 查看
Q:WinForm 如何注册热键?
A:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.DirectoryServices;
using
System.Runtime.InteropServices;
namespace
test
...
{
public
partial
class
Form1 : Form
...
{
class
HotKey
...
{
//
如果函数执行成功,返回值不为0。
//
如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
[DllImport(
"
user32.dll
"
, SetLastError
=
true
)]
public
static
extern
bool
RegisterHotKey(
IntPtr hWnd,
//
要定义热键的窗口的句柄
int
id,
//
定义热键ID(不能与其它ID重复)
KeyModifiers fsModifiers,
//
标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
Keys vk
//
定义热键的内容
);
[DllImport(
"
user32.dll
"
, SetLastError
=
true
)]
public
static
extern
bool
UnregisterHotKey(
IntPtr hWnd,
//
要取消热键的窗口的句柄
int
id
//
要取消热键的ID
);
//
定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
[Flags()]
public
enum
KeyModifiers
...
{
None
=
0
,
Alt
=
1
,
Ctrl
=
2
,
Shift
=
4
,
WindowsKey
=
8
}
}
public
Form1()
...
{
InitializeComponent();
HotKey.RegisterHotKey(
this
.Handle,
100
,
0
, Keys.F1);
}
protected
override
void
WndProc(
ref
Message m)
...
{
const
int
WM_HOTKEY
=
0x0312
;
//
按快捷键
switch
(m.Msg)
...
{
case
WM_HOTKEY:
switch
(m.WParam.ToInt32())
...
{
case
100
:
MessageBox.Show(
"
Press F1
"
);
break
;
}
break
;
}
base
.WndProc(
ref
m);
}
}
}
A:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.DirectoryServices;
using
System.Runtime.InteropServices;
namespace
test
...
{
public
partial
class
Form1 : Form
...
{
class
HotKey
...
{
//
如果函数执行成功,返回值不为0。
//
如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
[DllImport(
"
user32.dll
"
, SetLastError
=
true
)]
public
static
extern
bool
RegisterHotKey(
IntPtr hWnd,
//
要定义热键的窗口的句柄
int
id,
//
定义热键ID(不能与其它ID重复)
KeyModifiers fsModifiers,
//
标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
Keys vk
//
定义热键的内容
);
[DllImport(
"
user32.dll
"
, SetLastError
=
true
)]
public
static
extern
bool
UnregisterHotKey(
IntPtr hWnd,
//
要取消热键的窗口的句柄
int
id
//
要取消热键的ID
);
//
定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
[Flags()]
public
enum
KeyModifiers
...
{
None
=
0
,
Alt
=
1
,
Ctrl
=
2
,
Shift
=
4
,
WindowsKey
=
8
}
}
public
Form1()
...
{
InitializeComponent();
HotKey.RegisterHotKey(
this
.Handle,
100
,
0
, Keys.F1);
}
protected
override
void
WndProc(
ref
Message m)
...
{
const
int
WM_HOTKEY
=
0x0312
;
//
按快捷键
switch
(m.Msg)
...
{
case
WM_HOTKEY:
switch
(m.WParam.ToInt32())
...
{
case
100
:
MessageBox.Show(
"
Press F1
"
);
break
;
}
break
;
}
base
.WndProc(
ref
m);
}
}
}
相关文章推荐
- C# 如何实现热键注册 RegisterHotKey
- C# 如何实现热键注册 RegisterHotKey
- 在WPF中如何注册热键(转)
- Winform 系统热键的注册和说明
- VC如何注册、屏蔽全局键盘热键
- 如何注册全局热键(c++builder)
- Winform注册热键(转)
- C# 注册窗口热键(Winform&WPF)和系统热键
- 如何在你的java程序中注册系统级热键
- VC如何注册、屏蔽全局键盘热键
- winform中ShowInTaskbar设为false时,注册的热键失效的问题解决
- 如何注册热键
- C# 如何实现热键注册 RegisterHotKey
- vc 如何注册多个系统热键
- 【WinForm程序】注册热键快捷键切换
- 如何注册系统热键
- 用DELPHI如何注册系统热键
- 如何在你的java程序中注册系统级热键
- 在WPF中如何注册热键
- 【原创】vc 如何注册系统热键