Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выключить


xfrost ©   (2003-02-08 15:30:00) 

Подскажите пожалуйста как выключить комп под win2000 без сообщения "Теперь питание компа можно отключить"!!!!!!!!!!


Михайлов Антон   (2003-02-08 17:52:00) [1]

Procedure Shutdown;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
If Win32Platform = VER_PLATFORM_WIN32_WINDOWS Then
Begin
if not ExitWindowsEx(EWX_Force or
EWX_PowerOff or
EWX_ShutDown, 0) then
MessageBox(0, "An application refused to terminate", "Win32", MB_OK);
end;

If Win32Platform = VER_PLATFORM_WIN32_NT Then
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_POWEROFF, 0);
end;

end;

procedure TForm1.button1Click(Sender: TObject);
begin
Shutdown;
end;


Код не тестировался, но думаю работать будет


Наверх

Титульная страница Поиск, карта сайта Написать письмо