关于Windows Message ID 以及应用【转】

1. WM_NULL=0X 0000:
2. WM_CREATE=0X 0001:    应用程序创建一个窗口
3. WM_DESTROY=0X 0002:    一个窗口被销毁
4. WM_MOVE=0X 0003: 移动一个窗口
5. WM_SIZE=0X 0005:改变一个窗口的大小
6. WM_ACTIVATE=0X 0006: 一个窗口被激活或失去激活状态;
7. WM_SETFOCUS=0X 0007: 获得焦点后
8. WM_KILLFOCUS=0X 0008: 失去焦点
9. WM_ENABLE=0X 000A: 改变enable状态
10. WM_SETREDRAW=0X 000B: 设置窗口是否能重画
11. WM_SETTEXT=0X 000C: 应用程序发送此消息来设置一个窗口的文本
12. WM_GETTEXT=0X 000D: 应用程序发送此消息来复制对应窗口的文本到缓冲区
13. WM_GETTEXTLENGTH=0X 000E: 得到与一个窗口有关的文本的长度(不包含空字符)
14. WM_PAINT=0X 000F: 要求一个窗口重画自己
15. WM_CLOSE=0X 0010: 当一个窗口或应用程序要关闭时发送一个信号
16. WM_QUERYENDSESSION=0X 0011: 当用户选择结束对话框或程序自己调用ExitWindows函数
17. WM_QUIT=0X 0012: 用来结束程序运行或当程序调用postquitmessage函数
18. WM_QUERYOPEN=0X 0013: 当用户窗口恢复以前的大小位置时,把此消息发送给某个图标
19. WM_ERASEBKGND=0X 0014: 当窗口背景必须被擦除时(例在窗口改变大小时)
20. WM_SYSCOLORCHANGE=0X 0015: 当系统颜色改变时,发送此消息给所有顶级窗口
21. WM_ENDSESSION=0X 0016:当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束
22. WM_SYSTEMERROR=0X 0017: 
23. WM_SHOWWINDOW=0X 0018: 当隐藏或显示窗口是发送此消息给这个窗口
24. WM_ACTIVATEAPP=0X 001C: 发此消息给应用程序哪个窗口是激活的,哪个是非激活的;
25. WM_FONTCHANGE=0X 001D: 当系统的字体资源库变化时发送此消息给所有顶级窗口
26. WM_TIMECHANGE=0X 001E: 当系统的时间变化时发送此消息给所有顶级窗口
27. WM_CANCELMODE=0X 001F: 发送此消息来取消某种正在进行的摸态(操作)
28. WM_SETCURSOR=0X 0020:  如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口
29. WM_MOUSEACTIVATE=0X 0021: 当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口
30. WM_CHILDACTIVATE=0X 0022: 发送此消息给MDI子窗口当用户点击此窗口的标题栏, 或当窗口被激活,移动,改变大小
31. WM_QUEUESYNC=0X 0023:  此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息
32. WM_GETMINMAXINFO=0X 0024: 此消息发送给窗口当它将要改变大小或位置;
33. WM_PAINTICON=0X 0026:  发送给最小化窗口当它图标将要被重画
34. WM_ICONERASEBKGND=0X 0027:此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画
35. WM_NEXTDLGCTL=0X 0028: 发送此消息给一个对话框程序去更改焦点位置
36. WM_SPOOLERSTATUS=0X 002A: 每当打印管理列队增加或减少一条作业时发出此消息
37. WM_DRAWITEM=0X 002B:  当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者
38. WM_MEASUREITEM=0X 002C: 当button, combobox, listbox, listviewcontrol, ormenuitem被创建时发送此消息 给控件的所有者
39. WM_DELETEITEM =0X 002D: 当thelistbox或combobox被销毁或当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT消息
40. WM_VKEYTOITEM=0X 002E: 此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息
41. WM_CHARTOITEM=0X 002F:   此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息
42. WM_SETFONT=0X 0030:  当绘制文本时程序发送此消息得到控件要用的颜色
43. WM_GETFONT=0X 0031:  应用程序发送此消息得到当前控件绘制文本的字体
44. WM_SETHOTKEY=0X 0032:  应用程序发送此消息让一个窗口与一个热键相关连
45. WM_GETHOTKEY=0X 0033:  应用程序发送此消息来判断热键与某个窗口是否有关联
46. WM_QUERYDRAGICON =0X 0037: 此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标
47. WM_COMPAREITEM=0X 0039: 发送此消息来判定combobox或listbox新增加的项的相对位置
48. WM_GETOBJECT=0X 003D:  
49. WM_COMPACTING=0X 0041: 显示内存已经很少了
50. WM_WINDOWPOSCHANGING=0X 0046: 发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数
51. WM_WINDOWPOSCHANGED=0X 0047: 发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数
52. WM_POWER=0X 0048:  (适用于16位的windows) 当系统将要进入暂停状态时发送此消息
53. WM_COPYDATA=0X 004A:  当一个应用程序传递数据给另一个应用程序时发送此消息
54. WM_CANCELJOURNAL=0X 004B: 当某个用户取消程序日志激活状态,提交此消息给程序
55. WM_NOTIFY=0X 004E:   当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口
56. WM_INPUTLANGCHANGEREQUEST=0X 0050: 当用户选择某种输入语言,或输入语言的热键改变
57. WM_INPUTLANGCHANGE=0X 0051: 当平台现场已经被改变后发送此消息给受影响的最顶级窗口
58. WM_TCARD=0X 0052:  当程序已经初始化windows帮助例程时发送此消息给应用程序
59. WM_HELP=0X 0053: 此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口
60. WM_USERCHANGED=0X 0054: 当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息;
61. WM_NOTIFYFORMAT=0X 0055: 公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信
62. WM_CONTEXTMENU=0X 007B: 当用户某个窗口中点击了一下右键就发送此消息给这个窗口
63. WM_STYLECHANGING=0X 007C: 当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口
64. WM_STYLECHANGED=0X 007D: 当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口
65. WM_DISPLAYCHANGE=0X 007E: 当显示器的分辨率改变后发送此消息给所有的窗口
66. WM_GETICON=0X 007F:  此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;
67. WM_SETICON=0X 0080:  程序发送此消息让一个新的大图标或小图与某个窗口关联;
68. WM_NCCREATE=0X 0081:  当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;
69. WM_NCDESTROY=0X 0082:  此消息通知某个窗口,非客户区正在销毁
70. WM_NCCALCSIZE=0X 0083: 当某个窗口的客户区域必须被核算时发送此消息
71. WM_NCHITTEST=0X 0084:   移动鼠标,按住或释放鼠标时发生
72. WM_NCPAINT=0X 0085:  程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;
73. WM_NCACTIVATE=0X 0086: 此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;
74. WM_GETDLGCODE=0X 0087:   发送此消息给某个与对话框程序关联的控件, windows控制方位键和TAB键使输入进入 此控件通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它
75. WM_NCMOUSEMOVE=0X 00A0: 当光标在一个窗口的非客户区内移动时发送此消息给这个窗口,非客户区为:窗体的标题栏及窗的边框体
76. WM_NCLBUTTONDOWN=0X 00A1: 当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息
77. WM_NCLBUTTONUP=0X 00A2: 当用户释放鼠标左键同时光标某个窗口在非客户区时发送此消息;
78. WM_NCLBUTTONDBLCLK=0X 00A3:当用户双击鼠标左键同时光标某个窗口在非客户区时发送此消息
79. WM_NCRBUTTONDOWN=0X 00A4: 当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息
80. WM_NCRBUTTONUP=0X 00A5: 当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息
81. WM_NCRBUTTONDBLCLK=0X 00A6:当用户双击鼠标右键同时光标某个窗口在非客户区时发送此消息
82. WM_NCMBUTTONDOWN=0X 00A7: 当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息
83. WM_NCMBUTTONUP=0X 00A8: 当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息
84. WM_NCMBUTTONDBLCLK=0X 00A9:当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息
85. WM_KEYFIRST=0X 0100: 
86. WM_KEYDOWN=0X 0100: 按下一个键
87. WM_KEYUP=0X 0101:  释放一个键
88. WM_CHAR=0X 0102:  按下某键,并已发出WM_KEYDOWN,WM_KEYUP消息
89. WM_DEADCHAR=0X 0103: 当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口
90. WM_SYSKEYDOWN=0X 0104:当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;
91. WM_SYSKEYUP=0X 0105: 当用户释放一个键同时ALT键还按着时提交此消息给拥有焦点的窗口
92. WM_SYSCHAR=0X 0106: 当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口
93. WM_SYSDEADCHAR=0X 0107: 当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口
94. WM_INITDIALOG=0X 0110: 在一个对话框程序被显示前发送此消息给它,常用此消息初始化控件和执行其它任务
95. WM_COMMAND=0X 0111:  当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译
96. WM_SYSCOMMAND=0X 0112: 当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息
97. WM_TIMER=0X 0113:      发生了定时器事件
98. WM_HSCROLL=0X 0114:  当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件
99. WM_VSCROLL=0X 0115:  当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件
100. WM_INITMENU=0X 0116: 当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单

1.屏蔽文本框粘贴、复制和右键
 写一个新类继承textBox,并重写他的WndProc方法,通过监听消息ID来处理

0x007B:鼠标右键 message ID  0x0301:复制 (包括ctrl+c) message ID  0x0302:粘贴(包括ctrl+v) message ID

 1 public class MyTextBox : System.Windows.Forms.TextBox
 2     {
 3 
 4         protected override void WndProc(ref   Message m)
 5         {
 6             if (m.Msg != 0x007B && m.Msg != 0x0301 && m.Msg != 0x0302)
 7             {
 8                 base.WndProc(ref m);
 9             }
10         }
11 
12     } 

2.。。。(待添加完善)

 
原文地址:https://www.cnblogs.com/forevertime/p/5048118.html