Apagar y reiniciar pc
Publicado: 04 May 2024, 03:31
Les comparto esta simple aplicación cuyas funciones están expliciitadas en el título.
Les ahorro el trabajo a los usuarios que tienen conocimientos básicos de Borland Delphi (objetc Pascal), (entre los que me incluyo), y necesitan tener en una sola aplicación dichas funciones para fines distintos.
(Hubo un tiempo en que las busqué con mucha insistencia en internet).
Las extraje del Rat Coolvibes hecho por ex usuarios de este foro, profesionales de la programación.
He probado esta aplicación en Windows 10 Home y funciona perfectamente.
Les comparto también el proyecto compilado.
Código fuente (unit.pas):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure ObtenerPrivilegioDeApagado();
var
TokenPriv: TTokenPrivileges;
H: DWord;
HToken: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES, HToken);
LookUpPrivilegeValue(NIL, 'SeShutdownPrivilege',
TokenPriv.Privileges[0].Luid);
TokenPriv.PrivilegeCount := 1;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
H := 0;
AdjustTokenPrivileges(HToken, FALSE,
TokenPriv, 0, PTokenPrivileges(NIL)^, H);
CloseHandle(HToken);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//apagar
ObtenerPrivilegioDeApagado();
ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//reiniciar
ObtenerPrivilegioDeReinicio();
ExitWindowsEx(EWX_REBOOT+EWX_FORCE,0);
end;
end.
//Còdigo extraìdo del rat Coolvibes de Indetectables.net
Enlace de descarga al código fuente y al binario:
[Enlace externo eliminado para invitados]
Les ahorro el trabajo a los usuarios que tienen conocimientos básicos de Borland Delphi (objetc Pascal), (entre los que me incluyo), y necesitan tener en una sola aplicación dichas funciones para fines distintos.
(Hubo un tiempo en que las busqué con mucha insistencia en internet).
Las extraje del Rat Coolvibes hecho por ex usuarios de este foro, profesionales de la programación.
He probado esta aplicación en Windows 10 Home y funciona perfectamente.
Les comparto también el proyecto compilado.
Código fuente (unit.pas):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure ObtenerPrivilegioDeApagado();
var
TokenPriv: TTokenPrivileges;
H: DWord;
HToken: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES, HToken);
LookUpPrivilegeValue(NIL, 'SeShutdownPrivilege',
TokenPriv.Privileges[0].Luid);
TokenPriv.PrivilegeCount := 1;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
H := 0;
AdjustTokenPrivileges(HToken, FALSE,
TokenPriv, 0, PTokenPrivileges(NIL)^, H);
CloseHandle(HToken);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//apagar
ObtenerPrivilegioDeApagado();
ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//reiniciar
ObtenerPrivilegioDeReinicio();
ExitWindowsEx(EWX_REBOOT+EWX_FORCE,0);
end;
end.
//Còdigo extraìdo del rat Coolvibes de Indetectables.net
Enlace de descarga al código fuente y al binario:
[Enlace externo eliminado para invitados]