runsnake 发表于 2013-3-1 19:58:45

_IECreate()有时读的本地缓存的,怎么让它强制读网络?

我的机子主板有点问题,每次只要一断电,Cmos都会回到默认的,系统时间也会回到出厂日期
CMOS我没有招,好象在Windows系统下不能修改CMOS参数。于是就只想把时间改回来。
于是有下面的代码:若有联网就读网络时间更正本地时间,若没有,就用上次启动本程序时记下的时间。

但实际应用中,我发现个问题:用 _IECreate()后,用_IEBodyReadText()得到数据,有时居然不是实时网上的,应该读的IE缓存,我把ie的临时文件,cookie等删除后又可以读网络上的了。

请问,这该怎么办?想用InetRead()函数的,但它无法获得:http://www.timedate.cn/worldclock/ti.asp 这个网页的时间。怎么强制读取网页内容?或者用什么别的方式可以代替


#include <IE.au3>
#include <Date.au3>

Global $iFlag = 0, $sUrl, $oIE, $sTime, $aTime
RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "TimeCorrect", "REG_SZ", @ScriptFullPath)
Do
        If Ping('www.baidu.com', 2000) Then ExitLoop
        $iFlag += 1
Until $iFlag == 10

$sUrl = "http://www.timedate.cn/worldclock/ti.asp"
$oIE = _IECreate($sUrl, 0, 0)
If @error Then
        $sTime = IniRead(@ScriptDir & '\time.ini', 'Main', 'OldTime', _NowCalc())
        $aTime = StringRegExp($sTime, '\d+', 3)
Else
        $sTime = _IEBodyReadText($oIE)
        If @error Then $sTime = IniRead(@ScriptDir & '\time.ini', 'Main', 'OldTime', _NowCalc())       
        $aTime = StringRegExp($sTime, '\d+', 3)
EndIf       
If Not IsArray($aTime) Then Exit
_SetDate($aTime, $aTime, $aTime)
_SetTime($aTime, $aTime, $aTime)
IniWrite(@ScriptDir & '\time.ini', 'Main', 'OldTime', _NowCalc())
Exit

kevinch 发表于 2013-3-1 20:23:37

$sUrl = "http://www.timedate.cn/worldclock/ti.asp"
$xmlhttp=ObjCreate("msxml2.xmlhttp")
With $xmlhttp
        .open("get",$sUrl,true)
        .send
        While .readystate<>4
                Sleep(50)
        WEnd
        $str=.responsetext
EndWith
$aTime = StringRegExp($str, '\=(\d+)', 3)
If Not IsArray($aTime) Then Exit
MsgBox(0,"",StringFormat("%d-%d-%d %02d:%02d:%02d",$aTime,$aTime,$aTime,$aTime,$aTime,$aTime))这个试下

lxwlxwayy 发表于 2013-3-1 21:04:39

顶贴,InetRead()函数
页: [1]
查看完整版本: _IECreate()有时读的本地缓存的,怎么让它强制读网络?