警告 向应用程序的消息泵添加消息筛选器会降低性能。
下面介绍下使用ImessageFilter接口实现截获键盘或者鼠标的消息的一个小例子:
internal class MyMessager : IMessageFilter
{ public bool PreFilterMessage(ref Message m) { //如果检测到有鼠标或则键盘的消息,则使计数为0..... if (m.Msg == 0x0200 || m.Msg == 0x0216 || m.Msg == 0x0201 || m.Msg == 0x0204 || m.Msg == 0x0207) { WineDetail.iOperCount = 0; } return false; } }在当前要截获窗体的画面的构造函数中加入如下代码:
//截获本程序向系统发出的消息
MyMessager msg = new MyMessager(); Application.AddMessageFilter(msg);在画面中设置一个计时器,在计时器的方法中进行判断和执行事件:
private void timer1_Tick(object sender, EventArgs e)
{ iOperCount++; if (iOperCount > 10) {//do something....
}
}
以上就是一个简单的Demo程序的逻辑。