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;
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