如何在C#.Net中获取、屏蔽鼠标键盘消息?
2010-09-29 19:45
501 查看
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
static class StartupClass
2
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
3
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**////程序开始时候设置一个消息筛选MessageFilter,意思就是只要属于本程序的消息
4
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
///都要经过处理以后再发给本程序 打个比方,程序起来以后再程序的text里输入一
5
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
///个 9,但是这个9是系统先获得,然后系统通过消息的方式发给应用程序。这里的
6
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
///MessageFilter的意思就是所有系统发给应用程序的消息都要处理一下。
7
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[STAThread]
8
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static void MyMain()//Main()
9
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
RButtonMessageFilter filter = new RButtonMessageFilter();
11
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.AddMessageFilter(filter);
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.EnableVisualStyles();
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.SetCompatibleTextRenderingDefault(false);
15
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.Run(new Form());
16
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移除
17
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.RemoveMessageFilter(filter);
18
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}//在程序开始的时候添加一个本程序的系统消息的监测。
19
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//然后下面的类里处理所有的系统消息!
21
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public class RButtonMessageFilter : IMessageFilter
22
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
23
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool PreFilterMessage(ref Message m)
24
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
25
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONDBLCLK = 0x206;
26
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONDOWN = 0x204;
27
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONUP = 0x205;
28
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_KEYDOWN = 0x100;
30
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_KEYUP = 0x101;
31
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
switch (m.Msg)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
34
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//过滤掉所有与右键有关的消息
35
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONDBLCLK:
36
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONDOWN:
37
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONUP:
38
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
39
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
40
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
41
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_KEYDOWN: //有键盘按下
43
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
45
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = m.WParam.ToInt32();
46
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (k == 57)
47
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
48
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//屏蔽按键9 9的 asicii吗是57
49
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
50
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
51
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
52
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
53
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//按下的其他建不屏蔽
54
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
55
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
56
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
57
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
default:
58
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
59
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
60
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
61
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
62
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
63
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
64
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
static class StartupClass
2
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
3
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**////程序开始时候设置一个消息筛选MessageFilter,意思就是只要属于本程序的消息
4
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
///都要经过处理以后再发给本程序 打个比方,程序起来以后再程序的text里输入一
5
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
///个 9,但是这个9是系统先获得,然后系统通过消息的方式发给应用程序。这里的
6
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
///MessageFilter的意思就是所有系统发给应用程序的消息都要处理一下。
7
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[STAThread]
8
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static void MyMain()//Main()
9
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
RButtonMessageFilter filter = new RButtonMessageFilter();
11
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.AddMessageFilter(filter);
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.EnableVisualStyles();
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.SetCompatibleTextRenderingDefault(false);
15
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.Run(new Form());
16
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移除
17
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.RemoveMessageFilter(filter);
18
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}//在程序开始的时候添加一个本程序的系统消息的监测。
19
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//然后下面的类里处理所有的系统消息!
21
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public class RButtonMessageFilter : IMessageFilter
22
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
23
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool PreFilterMessage(ref Message m)
24
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
25
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONDBLCLK = 0x206;
26
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONDOWN = 0x204;
27
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_RBUTTONUP = 0x205;
28
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_KEYDOWN = 0x100;
30
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
const int WM_KEYUP = 0x101;
31
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
switch (m.Msg)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
34
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//过滤掉所有与右键有关的消息
35
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONDBLCLK:
36
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONDOWN:
37
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_RBUTTONUP:
38
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
39
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
40
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
41
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case WM_KEYDOWN: //有键盘按下
43
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
45
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = m.WParam.ToInt32();
46
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (k == 57)
47
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
48
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//屏蔽按键9 9的 asicii吗是57
49
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
50
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
51
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
52
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
53
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//按下的其他建不屏蔽
54
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
55
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
56
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
57
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
default:
58
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
59
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
60
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
61
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
62
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
63
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
64
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
相关文章推荐
- c# 如何获取键盘和鼠标处于空闲状态的时间
- c# 如何获取键盘和鼠标处于空闲状态的时间
- 如何在C#中使用全局鼠标、键盘Hook
- 微信公众号入门学习2_使用C#,ASP.NET APIController如何被动回复用户消息
- ASP.NET(C#)中如何获取IP,名称,操作系统,浏览器等信息
- C#中如何判断鼠标和键盘同时按下
- ASP.NET C#如何获取当月的第一天和最后一天
- C# 如何获取鼠标在屏幕上的位置,不论程序是否为活动状态
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- 如何在C#中使用全局鼠标、键盘Hook
- app如何从底层监听Win8系统的鼠标消息和键盘消息
- 在C#中如何模拟鼠标键盘操作
- C# 获取键盘和鼠标闲置的时间
- 求教C#使用(SnmpSharpNet.dll)Snmp协议,如何获取整个局域网段内的IP设备类型(例PC、路由器等)MAC和主机名?
- 大势至USB管理软件教你如何禁用U盘、屏蔽USB端口而不影响USB鼠标键盘使用!
- C#获取键盘和鼠标操作的时间的类
- 如何在C#中使用全局鼠标、键盘Hook
- 如何在C#中使用全局鼠标、键盘Hook
- C#获取键盘和鼠标操作的时间的类
- 如何在C#中使用全局鼠标、键盘Hook