我的机子主板有点问题,每次只要一断电,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[2], $aTime[1], $aTime[0])
_SetTime($aTime[3], $aTime[4], $aTime[5])
IniWrite(@ScriptDir & '\time.ini', 'Main', 'OldTime', _NowCalc())
Exit
|