360里面有个启动时间工具,有什么方法可以实现?
本帖最后由 KLU3K 于 2010-1-6 18:34 编辑是不是要用到wmi什么的?我不是太懂,能否给点提示?
已经自行解决,办法如下:#include <Date.au3>
$_TickCount = _Date_Time_GetTickCount()
Dim $iHours, $iMins, $iSecs
_TicksToTime($_TickCount, $iHours, $iMins, $iSecs) 关键是,需要做个服务或驱动在还没进系统时就要运转了(就是计时开始嘛),我们用的AU3运行环境一般是进入系统后的。。 to ls
错,autoit是可以写成服务的,不过写成服务后就不能用gui了.
to lz
思路:
将工具写成服务,获取系统开机时间,现在时间,对比一下就是时间差了 本帖最后由 顽固不化 于 2010-1-3 15:16 编辑
ls,,ad呀~~~~~~~
超版已做处理,afan高效率。 楼上的是什么意思?> 回复 5# hzxymkb
本来楼上是广告贴…… ls,,ad呀~~~~~~~
超版已做处理,afan高效率。
顽固不化 发表于 2010-1-3 15:13 http://www.autoitx.com/images/common/back.gif
?
What do you mean? 严禁广告!afan 真的对!值得表表扬! 我觉得是调用系统的开机时间,大家可以对比测试看看
cmd
systeminfo |find "系统启动时间" 经典
systeminfo |find "系统启动时间"
不错 找到了类似的代码,不知道能否转成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 //得到秒数 找到解决办法了#include <Date.au3>
$_TickCount = _Date_Time_GetTickCount()
Dim $iHours, $iMins, $iSecs
_TicksToTime($_TickCount, $iHours, $iMins, $iSecs) 谢谢分享,学习中,那天可能要用哦
页:
[1]