找回密码
 加入
搜索
查看: 7046|回复: 15

[IE类操作] 不要死循环啊!!!!

 火.. [复制链接]
发表于 2011-10-8 21:49:42 | 显示全部楼层 |阅读模式
本帖最后由 xymc 于 2011-10-14 21:45 编辑

WinWait("百度一下,你就知道", "", 60)
If WinExists("百度一下,你就知道") Then Exit
Run('C:\Program Files\Internet Explorer\IEXPLORE.EXE http://www.baidu.com')

以上代码正常的电脑测试通过,但在网维大师的环境下就不行,握说是网维大师HOOK了IE地址栏的类匹配,所以导致WinWait命令对于网页窗口无效。
请问还有什么命令可以代替WinWait,或者说可以实现以下功能。
检测用户有没打开过百度,1分钟内如果没有就自动打开。如果有打开就自动退出。

      While 1

Local $Inbaidu=False
$oShell=ObjCreate('Shell.Application')
For $oWindow In $oShell.Windows
        If StringInStr($oWindow.LocationURL,'baidu.com') Then
                $Inbaidu=True
                ExitLoop
        EndIf
Next

If $Inbaidu=True Then
        MsgBox(0,0,'百度的某个网页已经打开')
Else
        Run(@ProgramFilesDir&'\Internet Explorer\IEXPLORE.EXE http://www.baidu.com')
EndIf

    WEnd

以上代码会一直循环,怎么能做到检测到百度后自动退出程序,不要死循环啦....
发表于 2011-10-8 22:31:05 | 显示全部楼层
长时间延迟不过我建议你直接使用网维的开机命令来实现。。比这个省事
 楼主| 发表于 2011-10-9 00:52:16 | 显示全部楼层
回复 2# 大叔


    汗,你根本没明白我的意思
发表于 2011-10-9 11:28:24 | 显示全部楼层
Run('C:\Program Files\Internet Explorer\IEXPLORE.EXE http://www.baidu.com')  自己电脑能打开。网维下打不开。是注册表被修改了。。尝试Run(start http://www.baidu.com') 或Run(explorer.exe http://www.baidu.com')还打不开的话。在网上找找解锁的注册表。 RUN之前先改下注册表。
发表于 2011-10-9 11:50:29 | 显示全部楼层
本帖最后由 星雨朝霞 于 2011-10-9 11:52 编辑

枚举打开的资源管理器的所有路径从中判断路径是否存在baidu域名
 楼主| 发表于 2011-10-9 11:51:32 | 显示全部楼层
本帖最后由 xymc 于 2011-10-9 11:52 编辑

回复 4# 大叔


    我都说你误会我的意思了,我没说打不开百度啊,超郁闷!!!

主要问题是前面2行明白么
WinWait("百度一下,你就知道", "", 60)
If WinExists("百度一下,你就知道") Then Exit

就第一行就无效了,网维环境下,IE窗口标题/地址栏的类匹配都无效,明白么
你说下面的打开百度有P用啊,如果你再误会我第3次,你就有点幼稚了
发表于 2011-10-9 13:50:06 | 显示全部楼层
Local $Inbaidu=False
$oShell=ObjCreate('Shell.Application')
For $oWindow In $oShell.Windows
        If StringInStr($oWindow.LocationURL,'baidu.com') Then
                $Inbaidu=True
                ExitLoop
        EndIf
Next

If $Inbaidu=True Then
        MsgBox(0,0,'百度的某个网页已经打开')
Else
        Run(@ProgramFilesDir&'\Internet Explorer\IEXPLORE.EXE http://www.baidu.com')
EndIf
 楼主| 发表于 2011-10-10 20:32:57 | 显示全部楼层
回复 7# 星雨朝霞


    你这个是检测现在打开的所以窗口,没有baidu就打开是吧

我想一直在让程序检测1分钟内用户有没打开百度,如果在这1分钟内有打开程序就自动退出;
如果1分钟过去了,用户还没有没打开过百度就自动打开百度网页

有没办法改善,谢谢.(枚举资源管理器方面我看不懂)
发表于 2011-10-10 23:14:11 | 显示全部楼层
回复 8# xymc


    把那代码加入循环中即可
 楼主| 发表于 2011-10-11 20:01:52 | 显示全部楼层
回复 9# 星雨朝霞


    一直在检测感觉不好,有没办法做到像原代码一样,暂停脚本运行直至baidu.com出现为止,然后再检测是是否存在,如果有程序退出,没有的话1分钟后打开baidu.com.谢谢
 楼主| 发表于 2011-10-11 23:46:02 | 显示全部楼层
本帖最后由 xymc 于 2011-10-14 21:44 编辑

它会一直循环 啊,怎么能检测到百度就怎么退出循环
发表于 2011-10-13 05:39:44 | 显示全部楼层
AU3的基本函数的等待命令也是循环检测的.250毫秒检测一次!
 楼主| 发表于 2011-10-13 06:28:42 | 显示全部楼层

.

本帖最后由 xymc 于 2011-10-13 23:38 编辑

本人不才,麻烦发下完整代码(我也不要1直循环检测,只要检测1分钟就好了,1分钟后检测不到baidu.com,自动打开,然后程序退出) .
发表于 2011-10-18 17:21:21 | 显示全部楼层
本帖最后由 gzh888666 于 2011-10-18 17:28 编辑

别人帮助你的时候,虽然错误也不要恶语相向,幼稚 这个词能用到一个希望帮助你的人身上吗?
不知道这样写对不对,没有测试,这里给你一个思路!自己完善!
#include <INet.au3>
#include <IE.au3>
Local $title = "百度一下,你就知道", $NetGet, $Init
        $Init = TimerInit()
        While TimerDiff ($Init) > 60000
枚举当前网页的字符串
                                If StringRegExp($NetGet, "<title>百度一下,你就知道") = 1 Then
                        Exit
                Else
                        _IECreate("www.baidu.com")
                        Exit
                EndIf
        WEnd
发表于 2011-10-18 22:33:02 | 显示全部楼层
回复 4# 大叔


    我都说你误会我的意思了,我没说打不开百度啊,超郁闷!!!

主要问题是前面2行明白么
WinWait("百度一下,你就知道", "", 60)
If WinExists("百度一下,你就知道") Then Exit

就第一行就无效了,网维环境下,IE窗口标题/地址栏的类匹配都无效,明白么
你说下面的打开百度有P用啊,如果你再误会我第3次,你就有点幼稚了
xymc 发表于 2011-10-9 11:51


现在提问的人才是大爷!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-10 00:37 , Processed in 0.093014 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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