C#拦截Window消息

 重载方法 protected override void WndProc(ref Message m)
得到int msgID = m.WParam.ToInt32();
这里msgID,就是虚拟键码,这里指的是十六进制.
一些常用的虚拟键码为:

WM_PAINT = 0x000F
其中0x000F是C#中表示int的一种写法,可以定义为const
要求一个窗口重画自己

WM_NCPAINT = 0x0085
当某个窗口的框架必须被绘制时,程序发送此消息给窗口

WM_ACTIVATE = 0x0006
一个窗口被激活或失去激活状态

WM_KILLFOCUS = 0x0008
失去焦点

WM_NCCALCSIZE = 0x0083
当某个窗口的客户区域必须被核算时发送此消息

WM_NCACTIVATE = 0x0086
此消息发送给某个窗口 仅当它的非客户区需要被改变来显示是激活还是非激活状态

WM_SETTEXT = 0x000C
应用程序发送此消息来设置一个窗口的文本

WM_LBUTTONDOWN = 0x0201
按下鼠标左键

WM_LBUTTONUP = 0x0202
释放鼠标左键

WM_LBUTTONDBLCLK = 0x0203
双击鼠标左键

WM_MOUSEMOVE = 0x0200
移动鼠标

WM_SYSCOMMAND = 0x0112
当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息

WM_SIZE = 5
改变一个窗口的大小

WM_SIZING = 0x0214
当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们

WM_ERASEBKGND = 0x0014
当窗口背景必须被擦除时(例在窗口改变大小时)

WM_SHOWWINDOW = 0x18
当隐藏或显示窗口是发送此消息给这个窗口

WM_NCCREATE = 0x0081
当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送

WM_WINDOWPOSCHANGING = 0x0046
发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

WM_WINDOWPOSCHANGED = 0x0047
发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数


十进制

十六进制

WINUSER.H标识符

必需?

IBM兼容键盘

1

01

VK_LBUTTON


鼠标左键

2

02

VK_RBUTTON


鼠标右键

3

03

VK_CANCEL

ˇ

Ctrl-Break

4

04

VK_MBUTTON


十进制

十六进制

WINUSER.H标识符

必需?

IBM兼容键盘

91

5B

VK_LWIN


左Windows键

92

5C

VK_RWIN


右Windows键

93

5D

VK_APPS


Applications键

十进制

十六进制

WINUSER.H标识符

必需?

IBM兼容键盘

8

08

VK_BACK

ˇ

Backspace

9

09

VK_TAB

ˇ

Tab

12

0C

VK_CLEAR


Num Lock关闭时的数字键盘5

13

0D

VK_RETURN

ˇ

Enter (或者另一个)

16

10

VK_SHIFT

ˇ

Shift (或者另一个)

17

11

VK_CONTROL

ˇ

Ctrl (或者另一个)

18

12

VK_MENU

ˇ

Alt (或者另一个)

19

13

VK_PAUSE


Pause

20

14

VK_CAPITAL

ˇ

Caps Lock

27

1B

VK_ESCAPE

ˇ

Esc

32

20

VK_SPACE

ˇ

Spacebar

十进制

十六进制

WINUSER.H标识符

必需?

IBM兼容键盘

33

21

VK_PRIOR

ˇ

Page Up

34

22

VK_NEXT

ˇ

Page Down

35

23

VK_END

ˇ

End

36

24

VK_HOME

ˇ

Home

37

25

VK_LEFT

ˇ

左箭头

38

26

VK_UP

ˇ

上箭头

39

27

VK_RIGHT

ˇ

右箭头

40

28

VK_DOWN

ˇ

下箭头

41

29

VK_SELECT



42

2A

VK_PRINT



43

2B

VK_EXECUTE



44

2C

VK_SNAPSHOT


Print Screen

45

2D

VK_INSERT

ˇ

Insert

46

2E

VK_DELETE

ˇ

Delete

47

2F

VK_HELP



posted on 2009-07-23 21:25  hackenliu  阅读(1130)  评论(0编辑  收藏  举报

导航