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

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

Неужели в Windows 2000/XP не выключить питание? [D6, WinXP]


Hanson3003 ©   (2002-11-29 09:50:00) 

ExitWindowsEx и InitiateSystemShutDown не работают.


Hanson3003   (2002-11-30 13:43:00) [1]

Спасибо. Победил


Ich Hasse   (2002-11-29 20:15:00) [2]

Конечно же можно, как? Вот как:


program shutdown;
uses Windows, messages;

procedure ShutSystem;
var
handle_: THandle;
n: DWORD;
luid: TLargeInteger;
priv: TOKEN_PRIVILEGES;
ver: TOSVERSIONINFO;

begin
ver.dwOSVersionInfoSize := Sizeof(ver);
GetVersionEx(ver);
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, handle_)
then
if LookupPrivilegeValue(nil, "SeShutdownPrivilege", luid)
then begin priv.PrivilegeCount := 1;
priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; priv.Privileges[0].Luid := luid;
AdjustTokenPrivileges(handle_, false, priv, 0, nil, n);
end
else writeln("Ошибка")
else writeln("Ошибка ");
end
else writeln("Ошибка ");
if not ExitWindowsEx(EWX_POWEROFF,1)
then writeln("Ошибка"); end;

begin
ShutSystem;
end.



Вот именно то, что тебе надо, проверял работает и в 2K и в XP;


Song   (2002-11-29 11:06:00) [3]

Надо права иметь соответствующие.


Слесарь Матерящийся   (2002-11-29 10:52:00) [4]

Как не работают? Из меню Пуск её можно выключить -- значит, работают!


Наверх

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