大家好,最近做一个模拟鼠标点击的小软件.首先是采用热键取当前鼠标的屏幕坐标(有多个点)然后用热键启用程序.模拟鼠标在这几个点中点击.其实中时间间隔问题是这几个点全部点完以后需要再循环点击(1次或N次).如果不循环是正常.一循环就造成程序无响应,也没法结束/暂停这个鼠标自动点击了.贴下代码private void MouseStart(bool boolFlag)
        {
            if (boolFlag)
            {
                //1.点击位置1,间隔10毫秒后,再点击位置2            
                for (int i = 0; i < listPosition.Count; i++)
                {
                    //-1,-1的位置是无效的
                    if (listPosition[i].PointX > -1 && listPosition[i].PointY > -1)
                    {
                        //鼠标停留并点击多次
                        int intReplayNo = listPosition[i].ReplayNo;
                        do
                        {
                            ParameterizedThreadStart threadStart = new ParameterizedThreadStart(MouseClickCustom);
                            Thread thread = new Thread(threadStart);
                            thread.Start(listPosition[i]);                            //停留时间
                            System.Threading.Thread.Sleep(listPosition[i].StayTime);                            intReplayNo--;
                        } while (intReplayNo > 0);
                    }                    if (i == listPosition.Count - 1 && IsKeep)
                        MouseStart(boolFlag); //启用循环 //去掉这里就正常
                }
            }
        }
有哪位朋友做过类似的麻烦批点一下!

解决方案 »

  1.   

    for (int i = 0; i < listPosition.Count; i++)
                    {
                        //-1,-1的位置是无效的
                        if (listPosition[i].PointX > -1 && listPosition[i].PointY > -1)
                        {
                            //鼠标停留并点击多次
                            int intReplayNo = listPosition[i].ReplayNo;
                            do
                            {
                                ParameterizedThreadStart threadStart = new ParameterizedThreadStart(MouseClickCustom);
                                Thread thread = new Thread(threadStart);
                                thread.Start(listPosition[i]);
     
                                //停留时间
                                System.Threading.Thread.Sleep(listPosition[i].StayTime);
     
                                intReplayNo--;
                            } while (intReplayNo > 0);
                        }
     
                        if (i == listPosition.Count - 1 && IsKeep)
                            MouseStart(boolFlag); //启用循环 //去掉这里就正常
                    }
    你都把你那个 MouseStart(boolFlag);放到这里面这怎么结束的了噢