挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)找塔科夫开发,你有实力,我有渠道 年入百万+q:19213921高防服务器40核 64G 50M 249/月 高防云服务器78/月 Rx双机盒子,平替Km,无需驱动,自带轨迹,不黑屋+q:3059349426
天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击 ██【我要租此广告位】██. 
查看: 3718|回复: 7

[按键辅助教程] 如何知道窗口是否无响应或卡屏呢

[复制链接]
3正式会员
142/300

142

积分

47

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
95
海币
290
交易币
0
发表于 2015-3-19 14:34:29 | 显示全部楼层 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


                                         如何知道窗口是否无响应或卡屏呢
                                                                                                                                                                                作者:游9    推荐人:陈征用   编辑:果果。。



        开开心心做设计,敲代码{:5_135:}
顺顺利利调试运行,美滋滋的上万行代码,遛遛的通过了语法检查{:5_139:}
        咦,突然不动了......{:5_142:}
卡……卡屏了么。。。窗口无响应。。。。程序停止运行。。。浏览器崩溃。。{:5_131:}TMD在逗我。。

        窗口无响应,卡屏,浏览器崩溃……一直是脚本作者们头疼的问题。大多数人在遇到无响应等问题的时候,如果是重要的数据只能选择等待,忍无可忍时强制关闭程序。可是,下一次遇到无响应问题该怎么办呢?如何一劳永逸解决这个头疼点呢?

  近日小编收到陈征用同学推荐的帖子,一大神分享了“关于窗口无响应、卡屏状态的判断/判定”,仔细阅读之下发现有妙用,故此来分享给大家,希望能给大家带来一些帮助,妈妈再也不用担心我卡屏、窗口无响应问题啦{:5_130:}


知识拓展
疑问:为什么会出现卡屏、窗口无响应等情况呢?
    电脑卡屏、窗口无响应的原因很多,针对脚本作者,可能有如下原因造成:
    1.硬件配置问题
          如:硬盘坏道、cpu过热等等(扫描硬盘、检查CPU风扇)
          还有可能是驱动不兼容问题(扫描显卡或其他驱动,判断是否是最适应的)
    2.内存消耗问题
          程序运行时,消耗的内存太大,导致窗口无响应、卡屏等情况发生。(更换内存,加大内存)
    3.电脑机箱长期未清理
          电脑机箱里面内存条进灰尘,拆开机箱,拆下内存条,清洁下内存金手指(用橡皮擦擦拭,或者用浸泡过酒精,拧干的湿布),重新装回去,就可能可以了。




解决方案:

'方案一:
API
游客,如果您要查看本帖隐藏内容请回复


'方案二:发消息
  1. '给程序发消息,得到回应则说明有响应
  2. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  3. Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
  4. Cjb = FindWindow(vbNullString, 要检测进程窗体的标题名)
  5. Qqq = SendMessageTimeout(Cjb, WM_NULL, 0, 0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 3000, lngResult)
  6. If Qqq = 0 Then
  7.     TracePrint "进程不正常"
  8. else
  9.     TracePrint "进程正常"
  10. end if
复制代码
        注:Cjb = FindWindow(vbNullString, 要检测进程窗体的标题名),这里需要用双引号输入要检测进程窗体的标题名,例如"按键精灵"。

        思路解析:以上方法调用了2个系统API。
       调用系统API:findwindow,该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。
       调用系统API:SendMessageTimeout,该函数将指定的消息发送到一个或多个窗口
       通过给进程窗体发消息来判断窗口是否响应是否正常。若能检测到进程窗体的标题,则返回“进程正常”,若检测不到,则返回“进程不正常”。
        注:Qqq = SendMessageTimeout(Cjb, WM_NULL, 0, 0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 3000, lngResult)这里的3000是延迟时间,程序运行到这一段的时候,软件会有3s的延迟时间。这个参数的设置,大大们可以根据自己电脑的配置来进行设置哦。要是配置ok,反应迅速,500的延迟也就够了。








联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:XP做的脚本在WIN7上面不能用?
下一篇:请问问各位,易语言的变体型是什么?
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

3正式会员
171/300

171

积分

37

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
134
海币
1975
交易币
0
发表于 2015-5-14 21:37:31 | 显示全部楼层
就喜欢楼主这样的哈哈哈

2

积分

2

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
907
交易币
0
发表于 2015-6-7 21:55:52 | 显示全部楼层
硬实厉害啊  

1

积分

0

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
3
交易币
0
发表于 2015-7-26 21:03:11 | 显示全部楼层
我告诉自己这个帖子是一定要回的!这是百年难得一见的好贴啊!

93

积分

0

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
93
海币
91
交易币
0
发表于 2019-3-9 18:34:05 | 显示全部楼层
bm,nbk,nmlkmlkm;l,m;l,
回复 支持 反对

使用道具 举报

0

积分

0

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
15
交易币
0
发表于 2022-4-28 05:21:23 | 显示全部楼层
如何知道窗口是否无响应或卡屏
回复 支持 反对

使用道具 举报

5

积分

1

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
4
海币
50
交易币
0
发表于 2023-2-5 11:31:57 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-3-29 20:02 , Processed in 0.371843 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表