Как долго запущена Windows?

Материал из DRKB

Как долго запущена Windows?[править | править код]

Ниже приведён код обработчика события OnClick для Button1. Он показывает диалоговое окошко с текстом в следующем формате

Windows started on Thursday, February 10, 2000 at 11:42:46 AM 
Its been up for 0 days, 3 hours, 22 minutes, 54 seconds 


procedure TForm1.Button1Click(Sender: TObject); 
var 
  ndays: double; 
  ticks: LongInt; 
  btime: TDateTime; 
begin 
  { Функция GetTickCount получает количество миллисекунд, прошедших с момента старта Windows }
  ticks := GetTickCount; 

  { Чтобы получить дни, необходимо разделить на количество миллисекунд в дне, 24*60*60*1000=86400000 } 
  ndays := ticks/86400000; 

  { теперь вычитаем из текущей даты полученное количество дней работы Windows }
  bTime := now-ndays; 

  { показываем диалоговое окошко с сообщением }
  ShowMessage( 
   FormatDateTime('"Windows started on" dddd, mmmm d, yyyy, ' + 
                  '"at" hh:nn:ss AM/PM', bTime) + #10#13 + 
   'Its been up for ' + IntToStr(Trunc(nDays)) + ' days,' + 
   FormatDateTime(' h "hours," n "minutes," s "seconds"',ndays)); 
end;


Source: Взято из http://forum.sources.ru
ID: 01652



function UpTime: string;
const
  TicksPerDay: Integer    = 1000 * 60 * 60 * 24;
  TicksPerHour: Integer   = 1000 * 60 * 60;
  TicksPerMinute: Integer = 1000 * 60;
  TicksPerSecond: Integer = 1000;
var
  t: Longword;
  d, h, m, s: Integer;
begin
  t := GetTickCount;

  d := t div TicksPerDay;
  Dec(t, d * TicksPerDay);

  h := t div TicksPerHour;
  Dec(t, h * TicksPerHour);

  m := t div TicksPerMinute;
  Dec(t, m * TicksPerMinute);

  s := t div TicksPerSecond;

  Result := 'Uptime: ' + IntToStr(d) + ' Days ' + IntToStr(h) + ' Hours ' + IntToStr(m) +
    ' Minutes ' + IntToStr(s) + ' Seconds';
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := UpTime;
end;


Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01653


Чтобы определить сколько времени прошло с момента последней перезагрузки системы необходимо воспользоваться функцией

GetCurrentTime: LongInt; 

Возвращаемое значение: время в миллисекундах.

Пример использования:

Edit1.Text := FloatToStr(GetCurrentTime / 1000) + ' секунд с момента перезагрузки';


Source: http://delphiworld.narod.ru
ID: 01654