Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизВыключение или перезагрузка компа через ExitWindowsEx? Найти похожие ветки
← →
WhiteBarin © (2006-11-17 13:59) [0]Проблема в том что на одном компе работает на другом нет из-зи чего может быть это?
← →
Elen © (2006-11-17 14:00) [1]
> WhiteBarin
Как вызывается? где?
← →
Джо © (2006-11-17 15:04) [2]> из-зи чего может быть это?
Много из-за чего. Например, из-за разных ОС. В 98 дескриптор безопасности можно не получать, в NT — обязательно.
Лучше свой код покажи, укажут где ошибка.
← →
clickmaker © (2006-11-17 15:14) [3]кроме того, привилегии нужны процессу, чтоб погасить винду или комп.
см. AdjustTokenprivileges
Кстати, в Инете много примеров на эту тему
← →
WhiteBarin © (2006-11-20 09:34) [4]Вызывается просто по нажатию кнопки
Перезагрузить
ExitWindowsEx(ewx_reboot,0);
Выключить
ExitWindowsEx(ewx_shutdown,0);
Все в одной ОС WinXP. А вот про привилегии не знал, как все это реализовать чтобы везде работало, т.е. на всех компах с XP
← →
Dmitrij_K (2006-11-20 10:45) [5]В гугл товарищЪ
← →
HF-Trade © (2006-11-20 18:18) [6]procedure PowerOff(Flags: UINT);
var
tokenPriv: TTokenPrivileges;
tokenHandle: THandle;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and
((Flags and (EWX_POWEROFF or EWX_REBOOT or EWX_SHUTDOWN)) <> 0) then
begin
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,
TokenHandle) then begin
if LookupPrivilegeValue(nil,"SeShutdownPrivilege",
TokenPriv.Privileges[0].LUID) then
begin
TokenPriv.PrivilegeCount:=1;
TokenPriv.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if not AdjustTokenPrivileges(TokenHandle,false,TokenPriv,0,
TTokenPrivileges(nil^),DWORD(nil^)) then exit;
end;
end;
end;
ExitWindowsEx(Flags, 0);
end;
Перезагрузка -
PowerOff(EWX_REBOOT);
Выключение -
PowerOff(EWX_ShutDown);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.096 c