Время работы системы в Delphi 2009 - PullRequest
0 голосов
/ 29 октября 2009

Как я могу кодировать, чтобы увидеть, как долго компьютер был включен.

Простые примеры кода, если это возможно.

Ответы [ 2 ]

10 голосов
/ 29 октября 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.

UPDATE

, чтобы получить информацию в другом формате, просто нужно отредактировать эту строку,

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

и добавьте единицу DateUtils.

5 голосов
/ 30 октября 2009

Обратите внимание, что GetTickCount на самом деле не рассчитан на точность.

Для более надежной синхронизации используйте QueryPerformanceCounter и QueryPerformanceFrequency вызовы 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;
...