Controlando Procedimentos do Windows

Neste artigo vou explicar como executar alguns procedimentos do Sistema Operacional Windows pelo Delphi. Como: Fazer logoff, desligamento forçado, desligar,reiniciar e encerrar .

Controlando Procedimentos do Windows via Delphi

Neste artigo vou explicar como executar alguns procedimentos do Sistema Operacional Windows pelo Delphi. Como: Fazer logoff, desligamento forçado, desligar, reiniciar e encerrar.

Crie um novo Projeto (File/New/VCL Forms Application – Delphi)

Coloque no Form:

5 Buttons e nomeie como BtnShutdown e o Caption Shutdown, BtnForce e o Caption Force, BtnPower e o Caption Power, BtnLogoff e o Caption Logoff, BtnReboot e o Reboot Force.

Organize como abaixo:

Crie uma pasta e salve o Projeto com o nome que quiser.

Adicione uma Unit ao projeto e salve com o nome UControla_SO (File/New/Unit-Delphi)

Codifique a Unit Controla_SO como abaixo:

unit Controla_SO; interface uses Windows, SysUtils; procedure Controlar_SO(Fazer: Cardinal); implementation procedure Controlar_SO(Fazer: Cardinal); var SimbPriv: TTokenPrivileges; X: DWORD; HSimb: THandle; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, HSimb); LookUpPrivilegeValue(nil, 'SeShutdownPrivilege',SimbPriv.Privileges[0].Luid); SimbPriv.PrivilegeCount := 1; SimbPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; X := 0; AdjustTokenPrivileges(HSimb, False, SimbPriv, 0,PTokenPrivileges(nil)^, X); CloseHandle(HSimb); end; ExitWindowsEx(Fazer, 0); end; end.

Volte ao Formulário Principal e dê uses na Unit UControlar_SO. (Alt+F11).

Implemente os seguintes códigos nos botões:

procedure TForm1.BtnForceClick(Sender: TObject); begin // desligamento forçado do computador. Controlar_SO(EWX_FORCE); end; procedure TForm1.BtnLogoffClick(Sender: TObject); begin // executar logoff do computador. Controlar_SO(EWX_LOGOFF); end; procedure TForm1.BtnPowerOffClick(Sender: TObject); begin //executa o desligamento do computador. Controlar_SO(EWX_POWEROFF); end; procedure TForm1.BtnRebootClick(Sender: TObject); begin // executa a reinicialização do computador. Controlar_SO(EWX_REBOOT); end; procedure TForm1.BtnShutdownClick(Sender: TObject); begin // executa o incerramento do computador. Controlar_SO(EWX_SHUTDOWN); end;

Implementei dessa forma (em botões) para compreensão do código, porém podemos usar nos eventos dos forms.

Espero que seja útil pra vocês.

Compile o projeto clique nos botões e veja o resultado.

Até o próximo artigo.

Marco A. S. Carvalho

Artigos relacionados