Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизКак перезагрузть компьютер? Найти похожие ветки
← →
I am (2006-03-05 20:27) [0]Здравствуйте. Собственно, сабж. Заранее спасибо.
← →
Desdechado © (2006-03-05 20:29) [1]press reset to reboot
← →
I am (2006-03-05 20:36) [2][1] вариант, но, учитывая тематику форума, вопрос следует понимать как
"Каким образом реализовать вызов процедуры перезагрузки компьютера средствами программного продукта Borland Delphi?"
← →
begin...end © (2006-03-05 21:31) [3]ExitWindowsEx
← →
I am (2006-03-06 16:14) [4]Ситуация: Были внесены изменения в реестр, причем для вступления этих изменений в силу требуется перезагрузка. Также, если ввести неверный параметр в реестре, то ошибка выдастся на черном экране (ОС WinXP)
Вытекающий вопрос: считается ли LogOut равносильным перезагрузке компьютера?
← →
Dmitrij_K (2006-03-06 16:54) [5]
> Вытекающий вопрос: считается ли LogOut равносильным перезагрузке
> компьютера?
Зависит от того в какой раздел реестра пишешь.
← →
I am (2006-03-06 18:01) [6]> Зависит от того в какой раздел реестра пишешь.
HKEY_LOCAL_MACHINE тогда, по идее, требуется полноценная перезагрузка. А вот как ее реализовать?
← →
Dmitrij_K (2006-03-06 18:45) [7]
function MyExitWindows(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;
// Example to shutdown Windows:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;
// Example to reboot Windows:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyExitWindows(EWX_REBOOT or EWX_FORCE);
end;
-----------------------
www.DRKB.ru
← →
I am (2006-03-06 19:26) [8]Большое спасибо. Сам нашел схожий пример. Возник вопрос: что за тип EWX?
В хелпах я упоминания о нем не заметил (впрочем, как и о функции ExitWindowsEx)...
← →
Dmitrij_K (2006-03-06 19:36) [9]
> В хелпах я упоминания о нем не заметил
Плохо искал!
Delphi Menu : Help -> Windows SDK
← →
umbra © (2006-03-06 19:38) [10]
EWX_ля-ля
- это константы, они объявлены вwindows.pas
. ФункцияExitWindowsEx
описана вSDK
← →
I am (2006-03-07 11:06) [11]Еще раз большое спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c