unit
unitSysUpt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi, ExtCtrls;
type
TForm1 =
class
(TForm)
Memo1: TMemo;
Button1: TButton;
Timer1: TTimer;
Edit1: TEdit;
Button2: TButton;
procedure
FormCreate(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Timer1Timer(Sender: TObject);
procedure
Button2Click(Sender: TObject);
procedure
FormClose(Sender: TObject;
var
Action: TCloseAction);
private
public
procedure
IconCallBackMessage(
var
Mess: TMessage); message WM_USER +
100
;
end
;
var
Form1: TForm1;
log: TextFile;
t:
integer
;
implementation
{$R *.dfm}
procedure
TForm1
.
FormCreate(Sender: TObject);
var
nid: TNotifyIconData;
begin
with
nid
do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1
.
Handle;
uID :=
1
;
uFlags := NIF_ICON
or
NIF_MESSAGE
or
NIF_TIP;
uCallbackMessage := WM_USER +
100
;
hIcon := Application
.
Icon
.
Handle;
StrPCopy(szTip,
'System Uptime'
);
end
;
Shell_NotifyIcon(NIM_ADD, @nid);
AssignFile(log,
'log.txt'
);
try
Append(log);
except
ReWrite(log);
end
;
WriteLn
(log,
'---------------'
);
WriteLn
(log,
'Дата включения: '
+DateToStr(Now));
WriteLn
(log,
'Время включения: '
+TimeToStr(Now));
WriteLn
(log,
'---------------'
);
CloseFile(log);
Memo1
.
Lines
.
LoadFromFile(
'log.txt'
);
Memo1
.
ReadOnly:=
true
;
Edit1
.
ReadOnly:=
true
;
Button2
.
Enabled:=
false
;
end
;
procedure
TForm1
.
IconCallBackMessage(
var
mess: TMessage);
var
mouse: TMouse;
begin
case
Mess
.
lParam
of
WM_LBUTTONDOWN: Form1
.
Visible:=
true
;
end
;
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
Form1
.
Visible:=
false
;
Button2
.
Enabled:=
true
;
end
;
procedure
TForm1
.
Timer1Timer(Sender: TObject);
begin
t := GetTickCount;
Edit1
.
Text :=
'Время работы: '
+
IntToStr(t
div
60000
) +
' мин '
+
IntToStr((t
mod
60000
)
div
1000
) +
' сек '
+
IntToStr(t
mod
1000
) +
' мсек'
;
end
;
procedure
TForm1
.
Button2Click(Sender: TObject);
begin
Form1
.
Close;
end
;
procedure
TForm1
.
FormClose(Sender: TObject;
var
Action: TCloseAction);
var
nid: TNotifyIconData;
begin
AssignFile(log,
'log.txt'
);
try
Append(log);
except
ReWrite(log);
end
;
WriteLn
(log,
'Дата выключения: '
+DateToStr(Now));
WriteLn
(log,
'Время выключения: '
+TimeToStr(Now));
WriteLn
(log,
'---------------'
);
WriteLn
(log,
'Время работы: '
+
IntToStr(t
div
60000
) +
' мин '
+
IntToStr((t
mod
60000
)
div
1000
) +
' сек '
+
IntToStr(t
mod
1000
) +
' мсек'
);
WriteLn
(log,
'---------------'
);
CloseFile(log);
with
nid
do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := Form1
.
Handle;
uID :=
1
;
uFlags := NIF_ICON
or
NIF_MESSAGE
or
NIF_TIP;
uCallbackMessage := WM_USER +
100
;
hIcon := Application
.
Icon
.
Handle;
StrPCopy(szTip,
'System Uptime'
);
end
;
Shell_NotifyIcon( NIM_DELETE, @nid );
end
;
end
.