KLU3K 发表于 2010-1-2 15:34:16

360里面有个启动时间工具,有什么方法可以实现?

本帖最后由 KLU3K 于 2010-1-6 18:34 编辑

是不是要用到wmi什么的?我不是太懂,能否给点提示?

已经自行解决,办法如下:#include <Date.au3>
$_TickCount = _Date_Time_GetTickCount()
Dim $iHours, $iMins, $iSecs
_TicksToTime($_TickCount, $iHours, $iMins, $iSecs)

llztt 发表于 2010-1-2 15:43:36

关键是,需要做个服务或驱动在还没进系统时就要运转了(就是计时开始嘛),我们用的AU3运行环境一般是进入系统后的。。

ceoguang 发表于 2010-1-2 22:51:56

to ls
错,autoit是可以写成服务的,不过写成服务后就不能用gui了.
to lz
思路:
将工具写成服务,获取系统开机时间,现在时间,对比一下就是时间差了

顽固不化 发表于 2010-1-3 15:13:44

本帖最后由 顽固不化 于 2010-1-3 15:16 编辑

ls,,ad呀~~~~~~~

超版已做处理,afan高效率。

hzxymkb 发表于 2010-1-3 15:24:12

楼上的是什么意思?>

afan 发表于 2010-1-3 15:25:17

回复 5# hzxymkb


    本来楼上是广告贴……

ceoguang 发表于 2010-1-3 15:32:43

ls,,ad呀~~~~~~~

超版已做处理,afan高效率。
顽固不化 发表于 2010-1-3 15:13 http://www.autoitx.com/images/common/back.gif
?
What do you mean?

hzxymkb 发表于 2010-1-3 15:33:44

严禁广告!afan 真的对!值得表表扬!

supermyth 发表于 2010-1-3 15:41:10

我觉得是调用系统的开机时间,大家可以对比测试看看

cmd

systeminfo |find "系统启动时间"

nxbigdaddy 发表于 2010-1-6 00:09:16

经典
systeminfo |find "系统启动时间"
不错

KLU3K 发表于 2010-1-6 00:24:23

找到了类似的代码,不知道能否转成au3?
据说是调用了ntdll.dll的NtQuerySystemInformation函数进行长期精确计时。

#include <windows.h>
#include <assert.h>
#define NTSTATUS int

const int SYSTIMEINFORMATION=3;

//时间信息
struct TIME_INFORMATION
{
   LARGE_INTEGER    BootTime;
   LARGE_INTEGER    CurrentTime;
   LARGE_INTEGER    TimeZoneBias;
   DWORD                     CurrentTimeZoneId;
   DWORD                     Zero;
};

HMODULE                        hDll;
DWORD                           Length;
NTSTATUS                     ntS;
LARGE_INTEGER            eTime;
TIME_INFORMATION   TimeInfo;

typedefint(FAR WINAPI *PNtQuerySystemInformation)(int,void*,int,DWORD*);
PNtQuerySystemInformation NtQuerySystemInformation;

//加载dll
HMODULE UTlTimer::hDll=GetModuleHandle("ntdll.dll");

ntS=NtQuerySystemInformation(SYSTIMEINFORMATION, &TimeInfo,
sizeof(TIME_INFORMATION), &Length);
if (ntS < 0 || Length!=sizeof(TIME_INFORMATION))
{
    assert(false && "error");
}
else
{
    eTime.QuadPart=TimeInfo.CurrentTime.QuadPart-TimeInfo.BootTime.QuadPart;
}

eTime.QuadPart / 10000//得到毫秒数
eTime.QuadPart / 10000000 //得到秒数

KLU3K 发表于 2010-1-6 18:33:46

找到解决办法了#include <Date.au3>
$_TickCount = _Date_Time_GetTickCount()
Dim $iHours, $iMins, $iSecs
_TicksToTime($_TickCount, $iHours, $iMins, $iSecs)

lsszmj 发表于 2012-6-14 12:56:46

谢谢分享,学习中,那天可能要用哦
页: [1]
查看完整版本: 360里面有个启动时间工具,有什么方法可以实现?