关于窗口无响应、卡屏状态的判断/判定”

金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot、Python、Lua等脚本编程语言,教学包括自动化办公脚本、游戏辅助脚本、引流脚本、网页脚本、Android脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本,网赚脚本。想制作脚本和学习按键精灵的朋友可以加按键精灵学习交流群:554127455 学习路上你不再孤单,金猪脚本与你一起成长。

快乐的设计,输入代码

顺利调试运行,上万行代码,通过语法检查

按键精灵如何按时间调用子程序,我突然不动了……

卡住…屏幕卡住了吗? . 窗口没有响应。 . . 程序停止运行。 . 浏览器崩溃。 .

TMD 是在开玩笑。 .

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

最近,小编收到了陈正永同学推荐的一个帖子。一位大神分享了“关于无响应窗口和卡屏状态的判断/判断”。仔细阅读后,觉得很有用,特地分享给大家。给大家带来一些帮助,妈妈再也不用担心我的卡屏和窗口没有反应了

知识发展

问题:为什么会出现卡屏、窗口无响应等问题?

电脑卡屏、窗口无响应的原因有很多。对于脚本作者来说,可能有以下几个原因:

1.硬件配置问题

如:硬盘坏道、cpu过热等(扫描硬盘、检查CPU风扇)

也可能是驱动不兼容问题(扫描显卡或其他驱动判断是否最合适)

2.内存消耗

程序运行时,内存消耗过大,导致窗口无响应,卡屏。 (更换内存,增加内存)

3.电脑机箱很久没打扫了

电脑机箱内存条沾灰,拆开机箱,取出内存条,清洁内存金手指(用橡皮擦,或用湿布蘸酒精拧干),然后重新安装它,应该没问题。

解决方案:

‘选项 1:API

Private Declare Function IsHungAppWindow Lib “user32.dll” (ByVal hWnd As Long) As LongHwnd = Plugin.Window.Find(0, “None”)TracePrint HwndDoIf IsHungAppWindow(Hwnd)=0 Then i=0 ‘窗口正常,次数归零 TracePrint “窗口正常” Else i=i+1If i = 60 Then’如果窗口60次没有响应,窗口MsgBox会弹出”窗口正常没有响应” End IfEnd IfDelay 1000Loop

复制代码

思路分析:上述方法是通过调用系统win32的窗口通用控件类API:IsHungAppWindow来检测窗口是否无响应。

通过待判断窗口的句柄进行IsHungAppWindow检测。如果检测到窗口响应,则表示窗口正常响应,返回“窗口正常”消息。如果检测到窗口没有响应,则返回“窗口没有响应”消息。

‘选项 2:发送消息

‘向程序发送消息并得到响应,表示有响应 Declare Function FindWindow Lib “user32” Alias “FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As LongDeclare Function SendMessageTimeout Lib “user32″ 别名”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 LongCjb = FindWindow(vbNullString , 待检测窗口的标题名称) Qqq = SendMessageTimeout(Cjb, WM_NULL, 0, 0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 3000, lngResult)If Qqq = 0 ThenTracePrint “进程不正常” elseTracePrint “进程正常”结束如果

复制代码

注意:Cjb = FindWindow(vbNullString, 检测进程窗口的标题名),这里需要用双引号输入要检测的进程窗口的标题名,如“Key Wizard”。

思路分析:上述方法调用了两个系统API。

调用系统API:findwindow,该函数获取类名和窗口名与给定字符串匹配的顶级窗口的句柄。此函数不查找子窗口。

调用系统API:SendMessageTimeout,该函数将指定的消息发送到一个或多个窗口。

通过向进程窗口发送消息来判断窗口是否正常响应。如果能检测到进程窗口的标题按键精灵如何按时间调用子程序,则返回“进程正常”,否则返回“进程异常”。

注意:Qqq = SendMessageTimeout(Cjb, WM_NULL, 0, 0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 3000, lngResult) 这里的3000是延迟时间。当程序运行到这个阶段,软件会有3s的延迟时间。您可以根据计算机的配置设置此参数。如果配置ok,响应快,延迟500就够了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论