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;
                }
            }
        }
    

      

  • 相关阅读:
    Python的包管理工具Pip
    C语言移位运算符
    malloc函数具体解释
    HDU
    Java中Scanner的使用方法
    DOS call 中的%cd%,当前文件夹演示
    没有找到MSVCR100.dll解决方法
    什么是响应式表格(响应式表格和普通表格的区别)
    Redis和Memcache和MongoDB简介及区别分析(整理)
    GIT将本地项目上传到Github(两种简单、方便的方法)
  • 原文地址:https://www.cnblogs.com/feiyucha/p/10282718.html
Copyright © 2011-2022 走看看