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

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

Перезагрузка в Win XP [D7, WinXP]


Aldaris ©   (2005-07-25 22:49:00) 

Нигде в доках немогу найти как в Win XP перезагрузить (выключить) комп, если кто-то знает поделитесь Plz.


kami   (2005-07-26 09:32:00) [1]

EWX_POWEROFF or EWX_FORCE
Зачем же так жестоко? Хотя бы  EWX_POWEROFF or EWX_FORCEIFHUNG


Antonn   (2005-07-26 07:28:00) [2]

Aldaris ©   (25.07.05 22:49)
function CapootWindows(RebootParam: Longword): Boolean;
var
 TTokenHd: THandle;
 TTokenPvg: TTokenPrivileges;
 cbtpPrevious: DWORD;
 rTTokenPvg: TTokenPrivileges;
 pcbtpPreviousRequired: DWORD;
 tpResult: Boolean;
const
 SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 begin
   tpResult := OpenProcessToken(GetCurrentProcess(),
     TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
     TTokenHd);
   if tpResult then
   begin
     tpResult := LookupPrivilegeValue(nil,
                                      SE_SHUTDOWN_NAME,
                                      TTokenPvg.Privileges[0].Luid);
     TTokenPvg.PrivilegeCount := 1;
     TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
     cbtpPrevious := SizeOf(rTTokenPvg);
     pcbtpPreviousRequired := 0;
     if tpResult then
       Windows.AdjustTokenPrivileges(TTokenHd,
                                     False,
                                     TTokenPvg,
                                     cbtpPrevious,
                                     rTTokenPvg,
                                     pcbtpPreviousRequired);
   end;
 end;
 Result := ExitWindowsEx(RebootParam, 0);
end;

CapootWindows(EWX_POWEROFF or EWX_FORCE); //shoutdown
CapootWindows(EWX_REBOOT or EWX_FORCE); //reboot

ЗЫ Не мое


kblc   (2005-07-26 07:17:00) [3]

2Aldaris:
 см. линк который тебе дал Anatoly Podgoretsky. Там есть ВСЁ!


Aldaris   (2005-07-26 00:59:00) [4]

kami, а можно вас попросить показать тут на форуме этот кусочек програмы (вместе с соответствующими правами), заранее спасибо.


kami   (2005-07-25 23:59:00) [5]

2 [4] Aldaris ©
Функция ExitWindows(Ex) очень подходит для этого, если работа ведется не из сервиса, в противном случае еще больше подходит для этого функция InitiateSystemShutdownEx.
ЗЫ.Однако, кроме их использования, нужно получить еще соответствующие права для перезагрузки/выключения.


Aldaris   (2005-07-25 23:41:00) [6]

P.S.: Уважаемый alpet, функция ExitWindows(Ex) не подходит для этого (либо я что-то не так делал) а на счет " Странно, вроде всю жизнь было через меню "Пуск"->"Заверешние работы". " дак я ведь имел в виду как это в дельфи сделать ;)


Aldaris   (2005-07-25 23:36:00) [7]

Благодарю за помощь. Обязательно проверю в случае чего сообщу, еще раз спасибо за помошь.


Anatoly Podgoretsky   (2005-07-25 23:24:00) [8]

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


alpet   (2005-07-25 23:02:00) [9]

Странно, вроде всю жизнь было через меню "Пуск"->"Заверешние работы".

Да и функция ExitWindows(Ex) вроде еще не в списках obsolete, более того появилась еще и InitiateSystemShutdownEx.


Наверх

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