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

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

Как в WinXP выключить компьютер [D5, WinXP]


DenKop ©   (2002-08-29 16:17:00) 

Ни ExitWindows, ни ExitWindowsEx не работают. Вычитал в хелпе что нужно изменить уровень привелегий, но это не помогло.


melifaro   (2002-09-02 01:28:00) [1]

в XPкак в NT- сначало надо дать приложению привилегиюна выключение.

Пример:

Function GrantShutdownAccess: boolean;
var
hToken: THandle;
lpVersionInformation: TOSVersionInfo;
tkp: TTokenPrivileges;
RetLen: DWORD;
PreviousState: TTokenPrivileges;
begin
lpVersionInformation.dwOSVersionInfoSize := SizeOf(lpVersionInformation);
Result := GetVersionEx(lpVersionInformation);
if (lpVersionInformation.dwPlatformId = VER_PLATFORM_WIN32_NT) then
begin
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
Result := False;
exit;
end;
Result := LookupPrivilegeValue( Nil, "SeShutdownPrivilege",
tkp.Privileges[0].Luid);
if not Result then Exit;
PreviousState := tkp;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if not(AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(PreviousState), PreviousState, RetLen)) then
begin
Result := False;
Exit;
end;
end;
Result := True;
end;
А потом уже можно включать компьютер -
if GrantShutdownAccess then ExitWindowsEx (EWX_FORCE and EWX_SHUTDOWN,0);


Беня Ладен   (2002-09-02 01:04:00) [2]

Start->Turn off Computer->Turn off !!! :)))


Квазиравномернонепрерывный   (2002-08-29 16:43:00) [3]

В debug API есть ф-я, которая показывает диаложек "Перезагрузить комп сейчас?..." и если user32 ответил Да, перегружает виндовоз.


Наверх

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