Asunto: Apagar o reiniciar un equipo remoto con Delphi
¿Se puede apagar o reiniciar un equipo desde otro? lo que pretendo es hacer una aplicación Windows con Delphi que pueda apagar un equipo de forma remota. Desde un equipo de la red apagar otro ¿esto es posible? ¿cómo se hace?
Publicado:
Sab Ene 08, 2011 4:40 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Apagar o reiniciar un equipo remoto con Delphi
Anuncios
varios escribió:
¿Se puede apagar o reiniciar un equipo desde otro? lo que pretendo es hacer una aplicación Windows con Delphi que pueda apagar un equipo de forma remota. Desde un equipo de la red apagar otro ¿esto es posible? ¿cómo se hace?
Sí es posible, para hacerlo puedes usar la función del API de Windows: InitiateSystemShutdown.
Publicado:
Sab Ene 08, 2011 4:49 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: Re: Apagar o reiniciar un equipo remoto con Delphi
Anuncios
alonsojpd escribió:
Sí es posible, para hacerlo puedes usar la función del API de Windows: InitiateSystemShutdown.
Ok, no sé mucho de programación ¿me podrías poner un ejemplo de uso de esta función?
Publicado:
Sab Ene 08, 2011 4:50 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Apagar o reiniciar un equipo remoto con Delphi
Anuncios
varios escribió:
Ok, no sé mucho de programación ¿me podrías poner un ejemplo de uso de esta función?
Te ponemos a continuación el código fuente complento de la aplicación AjpdSoft Reiniciar Apagar equipo remoto, la descarga gratuita de la aplicación completa con código fuente en Delphi:
//Lee un booleano de un INI
function leBoolINI (clave, cadena : string; defecto : boolean) : boolean;
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
result := readbool (clave, cadena, defecto);
finally
free;
end;
end;
//Lee una cadena de texto de un INI
function leCadINI (clave, cadena : string; defecto : string) : string;
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
result := readString (clave, cadena, defecto);
finally
free;
end;
end;
//escribe un Booleano en un INI
procedure esBoolINI (clave, cadena : string; valor : boolean);
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
writeBool (clave, cadena, valor);
finally
free;
end;
end;
//escribe una cadena de texto en un INI
procedure esCadINI (clave, cadena, valor : string);
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
writeString (clave, cadena, valor);
finally
free;
end;
end;
//Detener la orden de apagado/reiniciado
function anularApagado (equipo : string) : boolean;
begin
try
ajustarPrivilegios (equipo);
finally
result := AbortSystemShutdown (PChar(equipo));
CloseHandle (hToken);
end;
end;
procedure TformMenuPrincipal.BtnQuitClick(Sender: TObject);
begin
close;
end;
procedure TformMenuPrincipal.txtSegundosKeyPress(
Sender: TObject; var Key: Char);
begin
if not (Key in [#8, #13, '0'..'9']) then
Key := #0;
end;
procedure TformMenuPrincipal.btEnviarClick(Sender: TObject);
var
resultado : boolean;
begin
resultado := enviarComandoApagado (txtIP.Text, txtMensaje.Text, opForzar.Checked,
opReiniciar.Checked, StrToInt(txtSegundos.Text));
if resultado then
MessageDlg('Comando de apagado/reiniciado enviado correctamente.',
mtInformation, [mbok], 0)
else
MessageDlg('Ha habido algún error al enviar el comando de ' +
'apagado/reiniciado. Compruebe la IP y asegúrese de que tiene ' +
'permisos suficientes para ejecutarlo.',
mtError, [mbok], 0)
end;
procedure TformMenuPrincipal.bDetenerClick(Sender: TObject);
begin
if anularApagado (txtIP.Text) then
MessageDlg ('Comando de anulación de apagado/reinicio ' +
'enviado correctamente.',
mtInformation, [mbok], 0)
else
MessageDlg ('Ha habido algún error al enviar el comando ' +
'de anulación de apagado/reinicio.',
mtError, [mbok], 0);
end;
procedure TformMenuPrincipal.bSalirClick(Sender: TObject);
begin
close;
end;
procedure TformMenuPrincipal.opReiniciarClick(Sender: TObject);
begin
if opReiniciar.Checked then
txtMensaje.Text := '¡¡Su equipo se va a reiniciar en ' +
txtSegundos.Text +
' segundos!! Si quiere anular el reinicio utilice el' +
' comando "shutdown"' +
' con el parámetro "a" en el equipo remoto.'
else
txtMensaje.Text := '¡¡Su equipo se va a apagar en ' +
txtSegundos.Text +
' segundos!! Si quiere anular el apagado utilice el' +
' comando "shutdown"' +
' con el parámetro "a" en el equipo remoto.'
end;
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A