Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перезагрузть компьютер? [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо