Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Как перезагрузть компьютер?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1141660359
Volkodav
2006-03-06 18:52
2006.03.26
Изменение фонового рисунка рабочего стола


1-1140501734
Димон
2006-02-21 09:02
2006.03.26
Ошибки в проекте


15-1140904369
Grol
2006-02-26 00:52
2006.03.26
Технология устранения ошибок в программе


2-1141869298
Mozart
2006-03-09 04:54
2006.03.26
e-mail


2-1141832281
Mozgan
2006-03-08 18:38
2006.03.26
Как узнать код клавиши F4