xymc 发表于 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

长时间延迟不过我建议你直接使用网维的开机命令来实现。。比这个省事

xymc 发表于 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域名

xymc 发表于 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

xymc 发表于 2011-10-10 20:32:57

回复 7# 星雨朝霞


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

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

有没办法改善,谢谢.(枚举资源管理器方面我看不懂)

星雨朝霞 发表于 2011-10-10 23:14:11

回复 8# xymc


    把那代码加入循环中即可

xymc 发表于 2011-10-11 20:01:52

回复 9# 星雨朝霞


    一直在检测感觉不好,有没办法做到像原代码一样,暂停脚本运行直至baidu.com出现为止,然后再检测是是否存在,如果有程序退出,没有的话1分钟后打开baidu.com.谢谢

xymc 发表于 2011-10-11 23:46:02

本帖最后由 xymc 于 2011-10-14 21:44 编辑

它会一直循环 啊,怎么能检测到百度就怎么退出循环

星雨朝霞 发表于 2011-10-13 05:39:44

AU3的基本函数的等待命令也是循环检测的.250毫秒检测一次!

xymc 发表于 2011-10-13 06:28:42

.

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

本人不才,麻烦发下完整代码(我也不要1直循环检测,只要检测1分钟就好了,1分钟后检测不到baidu.com,自动打开,然后程序退出) .

gzh888666 发表于 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

happytc 发表于 2011-10-18 22:33:02

回复 4# 大叔


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

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

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

现在提问的人才是大爷!
页: [1] 2
查看完整版本: 不要死循环啊!!!!