zoukankan      html  css  js  c++  java
  • 通过截取系统消息判断鼠标的单机键

    实现效果:

       

    知识运用:

      通过在From中重写Control类的虚方法 WndProc 来获取信息

      protected virtual void WndProc(ref Message m)    Message结构的属性

      

         通过实现IMessageFilter接口来创建消息筛选器  从而截取Windows消息

    实现代码:

            private void Form1_Load(object sender, EventArgs e)     //窗体加载消息筛选器
            {
                Application.AddMessageFilter(mf);   //添加消息筛选器 向目标传递Windows消息时监视这些消息
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                Application.RemoveMessageFilter(mf);  //从应用程序的消息泵中移除一个消息筛选器
            }
                //方法一:重写WndProc虚方法  与二不可共存
            //protected override void WndProc(ref Message m)
            //{
            //    switch (m.Msg)
            //    {
            //        case 513:
            //            MessageBox.Show("单机了鼠标左键", "系统信息");
            //            m.Result = (IntPtr)0;         //为了响应消息处理而向Windows返回的值
            //            break;
            //        case 516:
            //            MessageBox.Show("单机了鼠标右键", "系统信息");
            //            m.Result = (IntPtr)0;
            //            break;
            //        default:
            //            base.WndProc(ref m);
            //            break;
            //    }
            //}
        }
        //方法二: 实现IMessageFilter接口  从而获取Windows消息
        public class MessageFilter : IMessageFilter
        {
            public bool PreFilterMessage(ref Message message)
            {
                switch (message.Msg)
                {
                    case 513:
                        MessageBox.Show("单机了鼠标左键", "系统信息");
                        return true;
                    case 516:
                        MessageBox.Show("单机了鼠标右键", "系统信息");
                        return true;
                    default:
                        return false;
                }
            }
        }
    

      

  • 相关阅读:
    How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
    Android中MVC、MVP、MVVM具体解释
    破坏性创新第一原则
    Android学习笔记(八)——显示运行进度对话框
    Hadoop知识汇总
    mybatis collection和association使用区别
    mybatis $和#
    IDEA新建一个多maven模块工程(有图)
    可输入的下拉框
    springboot 使用i18n进行国际化
  • 原文地址:https://www.cnblogs.com/feiyucha/p/10282718.html
Copyright © 2011-2022 走看看