在程序中加了If GetInputState() Then DoEvents ,循环速度快了很多,但是出现了死机情况:当我点击其他软件时会出现死,而点击当前软件的其他按钮时正常,为什么?也就是说,电脑中只要该程序运行时,鼠标就不能离开程序,否则会死机。                For lngGsIndex = 0 To lngAllGs - 1
                        ......
                        If GetInputState Then
                            DoEvents
                            If blnStop Then GoTo FASTEXIT
                        End If
                        ......                
              Next 'lngGsIndex

解决方案 »

  1.   

    不可能的,我也验证过你的代码了:没有死机。
    windowsXp是个抢先多任务系统,不可能出现一个普通级别的进程抢占所有CPU而造成死机的可能。另外你这个代码要是想节约CPU,这个代码也不对:看看我给出的代码吧:http://topic.csdn.net/u/20080529/00/573e70c3-e6c5-43be-86da-8654e8fb841b.html这里面的58楼
      

  2.   

    程序本身运行正常,但不能同时使用软件,好几个人用过程序都出现了CPU100%的情况,找了许多帖子只发现了一个类似的情况,也无解决办法。
      

  3.   

                 For lngGsIndex = 0 To lngAllGs - 1 
                            ...... 
                                WaitTime(100)'不是这样引用啊 
                                If blnStop Then GoTo FASTEXIT 
                            ......                
                  Next 'lngGsIndex 
      

  4.   

    WaitTime(100)'不是这样引用啊 -----------改SLEEP(100)
      

  5.   


    我是用true_guowei 提供的方法写的,比sleep(100)好。经我测试,加什么代码都解决不了CPU高的问题,而且放进去后运行速度反而变慢了!经一位有双核的网友检测,程序运行一样是高CPU,同时使用其他软件时一样造成程序死掉。原因可能是我写的代码有问题:运算量大、循环太多、字符串操作多?如果是这样的情况如何才能找到病因呢?
      

  6.   

    没人能帮我解决吗?只好继续用DoEvents了:-( 
      

  7.   

    貌似这东西用HOOK DLL 比较好吧... 不会很明显的慢的... 
      

  8.   

    与老马同感,GetInputState解决不了问题,是要在其他地方查问题
      

  9.   

    这不叫死机,只是鼠标离开程序,程序会处于“假死”状态。你的Doevents写在  If GetInputState Then 里面,也就是GetInputState返回非零值(即有输入时)才执行DoEvents,当然会假死。你将DoEvents写在Next的前一句就行了