Советы пользователям Delphi и C++Builder


         

в процессе работы приложения следует


Иногда в процессе работы приложения следует произвести перезагрузку операционной системы. Это бывает необходимо, если в процессе работы приложения были произведены изменения в переменных окружения, изменено сетевое имя компьютера, и др.

Для перезагрузки операционной системы можно использовать функцию Windows API ExitWindowsEx, первый из параметров которой определяет способ завершения работы Windows 95/98.

Создадим простейший пример, использующий эту функцию. Для этого на форму приложения поместим три кнопки:



Рис. 1. Форма приложения для инициирования перезагрузки Windows.

Создадим обработчики событий, связанных с нажатием на кнопки:

void __fastcall TForm1::Button1Click(TObject *Sender) { ExitWindowsEx(EWX_LOGOFF,0); } //---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender) { ExitWindowsEx(EWX_SHUTDOWN,0); } //---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender) { ExitWindowsEx(EWX_REBOOT,0); } //---------------------------------------------------------------------------

В случае Delphi эти же обработчики событий выглядят так:

procedure TForm1.Button1Click(Sender: TObject); begin ExitWindowsEx(EWX_LOGOFF,0); end;

procedure TForm1.Button2Click(Sender: TObject); begin ExitWindowsEx(EWX_SHUTDOWN,0); end;

procedure TForm1.Button3Click(Sender: TObject); begin ExitWindowsEx(EWX_REBOOT,0); end;

Запустив приложение, мы можем выбрать способ завершения работы Windows либо сеанса пользователя Windows.

Отметим, что завершение работы или сеанса пользователя вWindows 95/98 действительно может быть осуществлено всеми тремя способами. В Windows NT же в общем случае работоспособен только первый обработчик события. Дело в том, что в соответствии с соображениями безопасности не всякое приложение имеет право произвести завершение работы Windows NT (например, хотя бы потому, что под управлением этой операционной системы могут выполняться различные сетевые и иные сервисы, жизненно важные для функционирования других компьютеров сети). Если же тем не менее возникнет необходимость произвести завершение работы Windows NT, а не просто завершение сеанса пользователя, следует воспользоваться функцией Windows API AdjustTokenPrivileges для предоставления данному приложению права остановки или перезагрузки операционной системы.


Содержание раздела