记录|如何全局监听鼠标和键盘等事件
前言
本来是想,如果一段时间没有操作软件,这个软件就自动退出的任务。但是在C#中,采用winform后,有很大的困难。表现为:
- 监听困难,理论上是只要进行Form监听就可以了,但是实际上Form上面有许多的Panel和Button等控件在上面进行监听,所以如果要写鼠标、按钮等监听事件,会导致要N多个控件的重复性写法。
- 一查找这种全局监听的,很多CSDN中都采用HOOK钩子的写法。而这种写法一则我没用过,二则会和系统抢资源,属于影响性能的一种方法。
后来,看了上面的文章后,自己进行了实验,发现这种方法确实可行。现在将复刻后的代码公布如下:
一、MyMessager类
这里创建个MyMessager类,对Messager信息进行监听。【类的代码如下:】
- iOperCount,创建为public类,是为了调用的时候来进行运行时间判断。
namespace ZHCH_winform_2.manager
{
internal class MyMessager : IMessageFilter
{
public int iOperCount { get; set; }
public bool PreFilterMessage(ref Message m)
{
// 如果检测到有鼠标或则键盘的消息,则使计数为0
if(m.Msg==0x0200 || m.Msg==0x0201 || m.Msg==0x0204 || m.Msg == 0x0207)
{
iOperCount = 0;
}
return false;
}
}
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: