Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Время старта и завершения работы системы?

Delphi , Синтаксис , Дата и Время

Время старта и завершения работы системы?

Вот так можно узнать дату/время загрузки или завершения работы системы (т.е. когда компьютер был выключен или перезагружен последний раз):

Code:

unit Unit1;

 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
 
type
TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   procedure FormCreate(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
uses Registry;
 
{$R *.dfm}
 
 
type
 
SYSTEM_TIME_OF_DAY_INFORMATION = record
   BootTime: LARGE_INTEGER;
   CurrentTime: LARGE_INTEGER;
   TimeZoneBias: LARGE_INTEGER;
   CurrentTimeZoneId: ULONG;
end;
PSYSTEM_TIME_OF_DAY_INFORMATION = ^SYSTEM_TIME_OF_DAY_INFORMATION;
 
NTSTATUS = DWORD;
 
const
SystemTimeOfDayInformation =3;
 
function NtQuerySystemInformation(SystemInformationClass:byte;
           SystemInformation: Pointer;
           SystemInformationLength: ULONG;
           ReturnLength: PULONG): NTSTATUS; stdcall; external 'NTDLL.DLL';
 
 
function SysDateToStr(ST : TSystemTime) : string;
const
sDateFmt = 'dddd, d MMMM, yyyy';
begin
SetLength(Result, 255);
GetDateFormat(LOCALE_USER_DEFAULT, 0, @ST, sDateFmt, @result[1], 255);
SetLength(Result, LStrLen(@result[1]));
end;
 
function SysTimeToStr(ST : TSystemTime):string;
const
sTimeFmt = 'HH:mm:ss' ;
begin
SetLength(result,15);
GetTimeFormat(LOCALE_USER_DEFAULT,0,@st,sTimeFmt,@result[1],15);
SetLength(result, StrLen(@result[1]));
end;
 
function GetFileTimeToSystemTime(ft:TFileTime):string;
var
st,lt:TSystemTime;
tz:TTimezoneInformation;
begin
Result:='';
if not FileTimeToSystemTime(ft, st) then exit;
GetTimeZoneInformation(tz);
SystemTimeToTzSpecificLocalTime(@tz,st,lt);
Result:=SysDateToStr(lt)+'  at  ' + SysTimeToStr(lt);
end;
 
// дата/время последнего выключения (или перезагрузки) системы
function GetLastSystemShutdown:string;
var
ft:TFileTime;
reg:TRegistry;
begin
Result:='';
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if (not reg.OpenKeyReadOnly('System\CurrentControlSet\Control\Windows')) then exit;
if (reg.ReadBinaryData('ShutdownTime',ft,sizeof(ft))=0) then exit
finally
reg.Free
end;
Result:= GetFileTimeToSystemTime(ft)
end;
 
// дата/время старта системы
function NtGetBootDateTime:string;
var
sti : SYSTEM_TIME_OF_DAY_INFORMATION;
status : NTSTATUS;
ftSystemBoot: FILETIME;
ST:TSystemTime;
begin
Result:='';
status:=NtQuerySystemInformation(SystemTimeOfDayInformation, @sti,
                    sizeof(SYSTEM_TIME_OF_DAY_INFORMATION),nil);
if (status<>NO_ERROR) then exit;
ftSystemBoot := PFILETIME(@(sti.BootTime))^;
if FileTimeToLocalFileTime(ftSystemBoot,ftSystemBoot) then
if FileTimeToSystemTime(ftSystemBoot,ST) then
Result:=SysDateToStr(ST)+'  at  '+SysTimeToStr(ST)
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:='System start: '+NtGetBootDateTime;
label2.Caption:='Last system shutdown: '+GetLastSystemShutdown;
end;
 
end.

PS: работает только в NT и выше.

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

Автор: Krid

Статья Время старта и завершения работы системы? раздела Синтаксис Дата и Время может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Дата и Время ::


реклама

::


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Rambler's Top100
27.06.2017 20:15:16/0.050482034683228/0