电脑时间自动校正
编辑时间:2018-06-25 作者:楚鸟 浏览量:2465 来源:网友发表

电脑时间自动校正,aardio论坛里别人发的,托盘提示不错。

// 本程序可通过http协议自动对时
// 本程序发布后,可将其快捷方式加入“启动”菜单实现随机启动。

import win.ui;
import win.ui.menu;
import inet.ras;
/*DSG{{*/
var winform = win.form(text="aardio form";left=0;top=0;right=330;bottom=156;border="dialog frame";max=false;min=false;parent=...;sysmenu=false)
winform.add()
/*}}*/

import win.util.tray;

// 声明设置系统时间api
SetSystemTime = ::Kernel32.api("SetSystemTime","int(struct& lpSystemTime)");

var tray = win.util.tray(winform);
var str2="通知";
var str1="开始同步时间...";

tray.pop(str1,str2);        
tray.message = 0xACCF;/*_WM_TRAYMESSAGE*/
tray.tip = str1; //设置鼠标提示

// 同步时间
aardioSetSystemTime=function(){    
        import inet.http;
        var timeurl = "http://www.baidu.com/";
        var http = inet.http();
        var lt;//保存响应头中的时间
        http.afterSend = function(statusCode,contentLength){
                if(statusCode == 200)
                {
                        lt=http.readHeader("Date");
                }
        }
        http.get(timeurl);
        
        if(http.statusCode == 200){
                //使用UTC时间格式化
                var tm=time(lt,"!%a, %d %b %Y %H:%M:%S GMT","enu");
                //设置系统时间
                SetSystemTime(tm);
                return true;
        }
        else{
                return false;
        }
}

timeronTimer = function(){
        str1="时间同步完成";
        if(aardioSetSystemTime()==false){
                str1="连接远程服务器失败,请检查网络。";
        }
        tray.pop(str1,str2);
        tray.message = 0xACCF;/*_WM_TRAYMESSAGE*/
        tray.tip = str1; //设置鼠标提示
        sleep(5000);
        tray.delete();
        winform.close();
}

var i = 1; 
while(i<6){
        var ras,lan = inet.ras.isAlive();
        if( lan ){
                //检测到本地连接
                i=999;
                timeronTimer();
        }
        else{
                //没有联网
                str1="网络尚未准备好,等待第"++ i ++"次重试...";
                tray.pop(str1,str2);
                tray.message = 0xACCF;/*_WM_TRAYMESSAGE*/
                tray.tip = str1; //设置鼠标提示
                sleep(5000);
                i+=1;
        }
        if(i > 5){
                i=999;
                str1="长时间等待发现网络没有准备好,可能网络没有启用,程序即将退出...";
                tray.pop(str1,str2);
                tray.message = 0xACCF;/*_WM_TRAYMESSAGE*/
                tray.tip = str1; //设置鼠标提示
                sleep(10000);
                tray.delete();
                winform.close();
        }
}

winform.show(false);
win.loopMessage();


来说两句吧