首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi 2009中的系统正常运行时间

Delphi 2009中的系统正常运行时间
EN

Stack Overflow用户
提问于 2009-10-30 03:08:22
回答 2查看 2K关注 0票数 0

如何编写代码来查看计算机已开机多长时间。

如果可能的话,简单的代码示例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-30 03:21:46

您可以使用GetTickCount函数查看此示例。

代码语言:javascript
复制
program Ticks;

{$APPTYPE CONSOLE}

uses
  Windows,
  SysUtils;

function TicksToStr(Ticks: Cardinal): string;    //Convert Ticks to String
var
  aDatetime : TDateTime;
begin
   aDatetime := Ticks  / SecsPerDay / MSecsPerSec;
   Result := Format('%d days, %s', [Trunc(aDatetime), FormatDateTime('hh:nn:ss.z', Frac(aDatetime))]) ;
end;

begin
  try
     Writeln('Time Windows was started '+ TicksToStr(GetTickCount));
     Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

更新

要获得其他格式的信息,只需编辑此行,

代码语言:javascript
复制
   Result := Format('%d days, %d hours %d minutes %d seconds ', [Trunc(aDatetime), HourOf(aDatetime),MinuteOf(aDatetime),SecondOf(aDatetime) ]) ;

并添加单元DateUtils。

票数 10
EN

Stack Overflow用户

发布于 2009-10-30 08:59:10

请注意,GetTickCount实际上并不是为准确性而设计的。

要获得更可靠的计时,请使用QueryPerformanceCounterQueryPerformanceFrequency 应用编程接口调用:

代码语言:javascript
复制
function SysUpTime : TDateTime;
var
  Count, Freq : int64;
begin
  QueryPerformanceCounter(count);
  QueryPerformanceFrequency(Freq);
  if (count<> 0) and (Freq <> 0) then
  begin
    Count := Count div Freq;
    Result := Count / SecsPerDay;
  end
  else
    Result := 0;
end;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1645896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档