GetInputState造成死机怎么解决

fastgun 2008-09-15 01:02:17
在程序中加了If GetInputState() Then DoEvents ,循环速度快了很多,但是出现了死机情况:当我点击其他软件时会出现死,而点击当前软件的其他按钮时正常,为什么?也就是说,电脑中只要该程序运行时,鼠标就不能离开程序,否则会死机。

For lngGsIndex = 0 To lngAllGs - 1
......
If GetInputState Then
DoEvents
If blnStop Then GoTo FASTEXIT
End If
......
Next 'lngGsIndex
...全文
509 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
唸慈安 2011-12-27
  • 打赏
  • 举报
回复
这不叫死机,只是鼠标离开程序,程序会处于“假死”状态。你的Doevents写在 If GetInputState Then 里面,也就是GetInputState返回非零值(即有输入时)才执行DoEvents,当然会假死。你将DoEvents写在Next的前一句就行了
fastgun 2008-10-18
  • 打赏
  • 举报
回复
与老马同感,GetInputState解决不了问题,是要在其他地方查问题
嗷嗷叫的老马 2008-10-10
  • 打赏
  • 举报
回复
你的循环到底是干什么用的?

是否能从它上面入手去解决?

见过许多类似的大循环的帖子,大部分在循环上都有可改进之处.
fastgun 2008-10-09
  • 打赏
  • 举报
回复
没人能解决啊
fastgun 2008-09-28
  • 打赏
  • 举报
回复
没人能解决吗
fastgun 2008-09-23
  • 打赏
  • 举报
回复
能具体说明一下吗?
bob008 2008-09-22
  • 打赏
  • 举报
回复
貌似这东西用HOOK DLL 比较好吧... 不会很明显的慢的...
fastgun 2008-09-18
  • 打赏
  • 举报
回复
没人能帮我解决吗?只好继续用DoEvents了:-(
fastgun 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bob008 的回复:]
WaitTime(100)'不是这样引用啊 -----------改SLEEP(100)
[/Quote]

我是用true_guowei 提供的方法写的,比sleep(100)好。

经我测试,加什么代码都解决不了CPU高的问题,而且放进去后运行速度反而变慢了!

经一位有双核的网友检测,程序运行一样是高CPU,同时使用其他软件时一样造成程序死掉。

原因可能是我写的代码有问题:运算量大、循环太多、字符串操作多?如果是这样的情况如何才能找到病因呢?
bob008 2008-09-15
  • 打赏
  • 举报
回复
WaitTime(100)'不是这样引用啊 -----------改SLEEP(100)
fastgun 2008-09-15
  • 打赏
  • 举报
回复
For lngGsIndex = 0 To lngAllGs - 1
......
WaitTime(100)'不是这样引用啊
If blnStop Then GoTo FASTEXIT
......
Next 'lngGsIndex
fastgun 2008-09-15
  • 打赏
  • 举报
回复
程序本身运行正常,但不能同时使用软件,好几个人用过程序都出现了CPU100%的情况,找了许多帖子只发现了一个类似的情况,也无解决办法。
fastgun 2008-09-15
  • 打赏
  • 举报
回复
有没有办法只对当前程序的鼠标点击做出反应,其他程序能照常使用?
true_guowei 2008-09-15
  • 打赏
  • 举报
回复
不可能的,我也验证过你的代码了:没有死机。
windowsXp是个抢先多任务系统,不可能出现一个普通级别的进程抢占所有CPU而造成死机的可能。

另外你这个代码要是想节约CPU,这个代码也不对:看看我给出的代码吧:http://topic.csdn.net/u/20080529/00/573e70c3-e6c5-43be-86da-8654e8fb841b.html这里面的58楼

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧