- Регистрация
- 07.07.15
- Сообщения
- 16
- Реакции
- 3
- Депозит
- 0
- Покупок
-
0
- Продаж
-
0
Создаем процедуру
Привилегииprivate
procedure PowerOFF;
{ Private declarations }
public
{ Public declarations }
end;
Код на таймерprocedure TForm1.PowerOFF;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
//=========== Привилегии ==============//
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired); // если выбивает ошибку,то в библиотеках Winapi.windows и оставляем только windows,зависит от версии delphi
end;
end;
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0); // ВЫключает наш компьютер.
end;
end;
Включить таймерprocedure TForm1.Timer1Timer(Sender: TObject);
var
a,b:string;
begin
slabel3.Caption:=TimeToStr(GetTime);
sLabel4.Caption:=TimeToStr(DateTimePicker1.Time-GetTime);
a:= TimeToStr(GetTime);
b:=TimeToStr(DateTimePicker1.Time);
if a=b then
PowerOFF;
end;
Выключить таймерTimer1.enabled:=True;
Timer1.enabled:=False;