Форум: "WinAPI";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизПерезагрузка в Win XP Найти похожие ветки
← →
Aldaris © (2005-07-25 22:49) [0]Нигде в доках немогу найти как в Win XP перезагрузить (выключить) комп, если кто-то знает поделитесь Plz.
← →
alpet © (2005-07-25 23:02) [1]Странно, вроде всю жизнь было через меню "Пуск"->"Заверешние работы".
Да и функция ExitWindows(Ex) вроде еще не в списках obsolete, более того появилась еще и InitiateSystemShutdownEx.
← →
Anatoly Podgoretsky © (2005-07-25 23:24) [2]http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N162
← →
Aldaris © (2005-07-25 23:36) [3]Благодарю за помощь. Обязательно проверю в случае чего сообщу, еще раз спасибо за помошь.
← →
Aldaris © (2005-07-25 23:41) [4]P.S.: Уважаемый alpet, функция ExitWindows(Ex) не подходит для этого (либо я что-то не так делал) а на счет " Странно, вроде всю жизнь было через меню "Пуск"->"Заверешние работы". " дак я ведь имел в виду как это в дельфи сделать ;)
← →
kami © (2005-07-25 23:59) [5]2 [4] Aldaris ©
Функция ExitWindows(Ex) очень подходит для этого, если работа ведется не из сервиса, в противном случае еще больше подходит для этого функция InitiateSystemShutdownEx.
ЗЫ.Однако, кроме их использования, нужно получить еще соответствующие права для перезагрузки/выключения.
← →
Aldaris © (2005-07-26 00:59) [6]kami, а можно вас попросить показать тут на форуме этот кусочек програмы (вместе с соответствующими правами), заранее спасибо.
← →
kblc © (2005-07-26 07:17) [7]2Aldaris:
см. линк который тебе дал Anatoly Podgoretsky. Там есть ВСЁ!
← →
Antonn © (2005-07-26 07:28) [8]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
ЗЫ Не мое
← →
kami © (2005-07-26 09:32) [9]
EWX_POWEROFF or EWX_FORCE
Зачем же так жестоко? Хотя бы EWX_POWEROFF or EWX_FORCEIFHUNG
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c