簡體   English   中英

Delphi 2009中的系統正常運行時間

[英]System Uptime in Delphi 2009

如何編碼以查看計算機已開啟多長時間。

如果可能的話,提供簡單的代碼示例。

您使用GetTickCount函數請參見此示例。

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.

更新

要獲取其他格式的信息,只需編輯此行,

   Result := Format('%d days, %d hours %d minutes %d seconds ', [Trunc(aDatetime), HourOf(aDatetime),MinuteOf(aDatetime),SecondOf(aDatetime) ]) ;

並添加單位DateUtils。

請注意,GetTickCount並不是真正為准確性而設計的。

為了獲得更可靠的計時,請使用QueryPerformanceCounterQueryPerformanceFrequency api調用:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM