![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перезагрузка в 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.