如何获取电脑屏幕的鼠标事件,类似窗体有MouseMove事件,那屏幕的MouseMove事件什么获取?我想做的功能:无边框的form窗体移动功能,窗体顶有一个toolStrip控件(类似有边框窗体的标题栏),
toolStrip控件有MouseMove事件,但只要我移动的速度快,鼠标就会离开toolStrip控件(也就是离开窗体,MouseMove事件就无效),现在若能获取电脑屏幕的鼠标MouseMove事件好就好办有做过的朋友说一下如何获取电脑屏幕的鼠标MouseMove事件,非常感谢是屏幕 鼠标移动事件,不是窗体的鼠标移动事

解决方案 »

  1.   

    比如说移到页面哪个部分。。给这个部分绑定上movsemove事件。。得到鼠标的X,Y坐标。。存下。。鼠标的X,Y坐标在不断变化。。你也不断把它与比较你存下来刚进来时X,Y(加,减)再进行你要的判断了。。
      

  2.   


    当一个窗体加载后,我按下toolStrip控件(引发toolStrip1_MouseDown,我做一个会标识),这个时候当鼠标在电脑屏幕移动时,我想获取屏幕的移动事件,这样实现窗体的移动。
    如果用toolStrip1_MouseMove事件的话,只要鼠标移动快,鼠标就会离开toolStrip1,这样toolStrip1_MouseMove会失效
      

  3.   


    比如说移到页面哪个部分。。给这个部分绑定上movsemove事件。。
    你说的这个就是关键,速度快鼠标就会离开窗体,那我要绑定哪个的movsemove事件?
    所以我就想找屏幕的movsemove事件才能解决
      

  4.   

            Point mousePoint; // 窗体的屏幕坐标
            Point formPoint;
            private void toolStrip1_MouseDown(object sender, MouseEventArgs e)
            {
                mousePoint = Control.MousePosition;
                formPoint = this.Location;
            }        private void toolStrip1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Point mousePos = Control.MousePosition;
                    this.Location = new Point(mousePos.X - mousePoint.X + formPoint.X, mousePos.Y - mousePoint.Y + formPoint.Y);
                }
            }上面代码是用 toolStrip控件 代替有边框窗体的标题栏,但移动速度快就没用
      

  5.   

    直接调用WinAPI来获得鼠标在电脑屏幕上的位置就行了,或者用系统钩子监视鼠标移动消息也可以。然后自定义一个事件,如果鼠标位置发生了变化就执行你想要的操作,摒弃C#内建的鼠标移动事件不就行了。
      

  6.   


    哎,我是做winform滴 ,好伤心
      

  7.   

    设置Form的Capture属性为true,可以捕获鼠标事件。
      

  8.   

            public FmMessage()
            {
                InitializeComponent();            this.Capture = true;//设置
            }        #region 移动窗口
            Point mousePoint; // 窗体的屏幕坐标
            Point formPoint;
            private void toolStrip1_MouseDown(object sender, MouseEventArgs e)
            {
                this.Capture = true;
            }
            private void FmMessage_MouseDown(object sender, MouseEventArgs e)
            {
                mousePoint = Control.MousePosition;
                formPoint = this.Location;
            }
            private void FmMessage_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Point mousePos = Control.MousePosition;
                    this.Location = new Point(mousePos.X - mousePoint.X + formPoint.X, mousePos.Y - mousePoint.Y + formPoint.Y);
                }
            }
            #endregion
    感谢各位进来朋友的关注和支持,根据 16# 的说法得到一个解决方案,虽然还不是很好,但能随意移动了结贴给分了,各位万福!!!!!