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

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

Выход из Windows [D7, WinXP]


NavigatorV ©   (2003-12-02 19:28:00) 

Как програмно завершить работу в Windows XP (т.е. Power Off)


YuRock   (2003-12-29 14:29:00) [1]

Вот рабочий вариант:


Uses Windows, SysUtils;

procedure ExitWnd;
var
 hToken : THANDLE;
 tkp : TTokenPrivileges;
 rl : DWORD;
begin
 OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken);
 if not (LookupPrivilegeValue(nil, LPSTR('SeShutdownPrivilege'), tkp.Privileges[0].Luid)) then
  begin
    MessageBox(0, 'Нет локальных привилегий', '', MB_ICONSTOP);
    Exit;
  end;
 tkp.PrivilegeCount := 1;
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);
 if not (LookupPrivilegeValue(nil, LPSTR('SeRemoteShutdownPrivilege'), tkp.Privileges[0].Luid)) then
  begin
    MessageBox(0, 'Нет сетевых привилегий', '', MB_ICONSTOP or MB_TASKMODAL);
    Exit;
  end;
 tkp.PrivilegeCount := 1;
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);

 if not ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0) then
   MessageBox(0, 'Что-то не то...', '', MB_ICONSTOP or MB_TASKMODAL);
end.


tesseract   (2003-12-29 13:42:00) [2]

BOOL ExitWindowsEx(
 UINT uFlags,
 DWORD dwReason
);
UFlags:
EWX_LOGOFF:  
EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN

dwReason - на фиг не нужен.

BOOL InitiateSystemShutdownEx(
 LPTSTR lpMachineName,
 LPTSTR lpMessage,
 DWORD dwTimeout,
 BOOL bForceAppsClosed,
 BOOL bRebootAfterShutdown,
 DWORD dwReason
);
только Winnt/WinXP


Рамиль   (2003-12-29 09:57:00) [3]

В XP все решается проще. Есть такая программка стандартная
shutdown.exe, можно даже завершить работу удаленного компа.


Guest   (2003-12-28 21:45:00) [4]

Есть примеры!!! Отключается XP даже VB скриптом, кому надо, мыльте ilya2003@ezmail.ru.


Smoke   (2003-12-16 17:10:00) [5]

1.Дать процессу привелегию SeShutdownName
2.HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Winlogon\PowerdownAfterShutdown=1
3.ExitWindowex EWX_FORCE | EWX_SHUTDOWN,0


Anatoly Podgoretsky   (2003-12-02 19:44:00) [6]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N162


Наверх

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