![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
команда в WinAPI [D6, WinXP]
DimaDukat © (2006-05-02 23:41:00)Подскажите пожалуйста, как программно выключить компьютер?
Handle (2006-05-03 22:12:00) [1]
procedure ExitWinNT(AShutdown: Boolean);
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
end;
end;
procedure NTWait;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
SetSystemPowerState(true, true);
end;
end;
procedure NTReboot;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NTWait;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
NTReboot;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ExitWinNT(True);
end;
VirEx (2006-05-03 20:56:00) [2]пуск -> выполнить -> cmd -> shutdown /?
rundll32.exe powrprof.dll,SetSuspendState //переход Windows в спящее состояние
shutdown -r -c "WinConsul перезагружает Windows, для отмены - stopRestart"
shutdown -r -t 0 //быстрая перезагрузка Windows
shutdown -a //отмена перезагрузки/завершения работы Windows
shutdown -s -c "WinConsul завершает работу Windows, для отмены - stopRestart"
Lamer@fools.ua (2006-05-03 00:08:00) [3]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621105&n=15
Джо (2006-05-02 23:42:00) [4]ExitWindowsEx