![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перезагрузть компьютер? [D5, XP]
I am © (2006-03-05 20:27:00)Здравствуйте. Собственно, сабж. Заранее спасибо.
I am (2006-03-07 11:06:00) [1]Еще раз большое спасибо.
umbra (2006-03-06 19:38:00) [2]
EWX_ля-ля- это константы, они объявлены вwindows.pas. ФункцияExitWindowsExописана вSDK
Dmitrij_K (2006-03-06 19:36:00) [3]
> В хелпах я упоминания о нем не заметил
Плохо искал!
Delphi Menu : Help -> Windows SDK
I am (2006-03-06 19:26:00) [4]Большое спасибо. Сам нашел схожий пример. Возник вопрос: что за тип EWX?
В хелпах я упоминания о нем не заметил (впрочем, как и о функции ExitWindowsEx)...
Dmitrij_K (2006-03-06 18:45:00) [5]
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 18:01:00) [6]> Зависит от того в какой раздел реестра пишешь.
HKEY_LOCAL_MACHINE тогда, по идее, требуется полноценная перезагрузка. А вот как ее реализовать?
Dmitrij_K (2006-03-06 16:54:00) [7]
> Вытекающий вопрос: считается ли LogOut равносильным перезагрузке
> компьютера?
Зависит от того в какой раздел реестра пишешь.
I am (2006-03-06 16:14:00) [8]Ситуация: Были внесены изменения в реестр, причем для вступления этих изменений в силу требуется перезагрузка. Также, если ввести неверный параметр в реестре, то ошибка выдастся на черном экране (ОС WinXP)
Вытекающий вопрос: считается ли LogOut равносильным перезагрузке компьютера?
begin...end (2006-03-05 21:31:00) [9]ExitWindowsEx
I am (2006-03-05 20:36:00) [10][1] вариант, но, учитывая тематику форума, вопрос следует понимать как
"Каким образом реализовать вызов процедуры перезагрузки компьютера средствами программного продукта Borland Delphi?"
Desdechado (2006-03-05 20:29:00) [11]press reset to reboot