Apagar, Reiniciar y Cerrar la sesion con un procedimiento


Estos procedimientos son, definitivamente obosoletos, ya que tiene mas desventajas que ventajas. Quizas la mas grande desventaja es que solo funciona bajo windows 98, y es una desventaja porque windows 98 esta siendo reemplazado por otros SO. Pero bueno puede quedar como un buen ejemplo del uso de Exec.

Los tres procedimientos descritos a continuacion sirven pues para eso, apagar, reiniciar y cerrar la sesion en windows, se hace uso del procedimiento exec, dentro de la unidad dos, exec se utiliza para poder tener acceso a archivos externos desde un programa en pascal, ya sea para acceder a otros programas hechos con pascal o comandos del sistema operativo como son copy, dir, format, etcetera.

Todos los procedimientos son similirares a exepcion de los parametros, para realizar estas tres acciones se usan los trucos que estan colocados en la seccion de algunas cosillas.., para apagar, reiniciar y cerrar la sesion desde windows con un icono de acceso directo.

La sintaxis de exec es muy sencillas, exec('ruta del archivo','parametros');, en "ruta del archivos" se debe colocar la ruta completa del archivo por ejemplo c:\prueba.exe, si solo se coloca el nombre del archivo, se entiende que ese archivo esta en el mismo directorio donde se ejecuta el programa, si el programa no recibe parametros o no se desea mandar parametros se dejan las comillas simples ''

procedure apagar;
begin
         swapvectors
         exec('c:\windows\rundll32.exe','user.exe,ExitWindows');
         swapvectors
         halt(1);
end;

procedure Reiniciar;
begin
         swapvectors
         exec('c:\windows\rundll32.exe','Shell32.dll,SHExitWindowsEx 2');
         swapvectors
         halt(1);
end;

procedure cerrar_sesion;
begin
         swapvectors
         exec('c:\windows\rundll32.exe','Shell32.dll,SHExitWindowsEx');
         swapvectors
         halt(1);
end;

Hay que tener en cuenta la reservacion de memoria con la directiva de compilacion {$M} al inicio del programa (antes de program) , ya que en la mayoria de los casos si no se usa esta directiva no ejecutara nada y doserror guardara el error 8 referente a falta de memoria, una reseva estandar es {$M 4000,0,0}

Cuando se llaman a cualquiera de los tres procedimientos anteriores, dejan su ejecucion hasta el final y trata de terminar el programa, por eso es necesario el procedimiento Halt, para terminar el programa sin pasar por las lineas que faltasen, por ejemplo (suponiendo que dentro de los procedimientos no existiera halt(1):

repeat
      writeln('1. Agregar');
      writeln('2. Borrar');
      writeln('3. Apagar el sistema');
      writeln('4. Salir');
      writeln;
      op:=readkey;
      writeln;
      if op ='3' then
          apagar
until op ='4';

Cuando se elija la opcion 3 se manda a llamar a el procedimiento apagar, pero no hara tal accion sino hasta elejir la opcion 4 que es la que termina el programa, y hasta entonces procedera a apagar el equipo, con halt termina el programa automaticamente y apaga la maquina, cuando estes trabajando con archivos no se te olvide cerrarlos antes de mandar a llamar a los procedimientos

Estos procedimientos solo funcionan cuando el programa .exe se ejecuta desde windows, o desde Dos (inicio > programas > MSDOS) dentro de windows, no funcionara si reiniciaste la maquina en modo ms-dos o no estas dentro de windows (aparecera un mensaje diciendo que el programa requiere windows), tampocon funcionan si lo estas corriendo desde el compilador de pascal.

Baja apagar.zip


Regresar


inicio
Si llegaste a esta pagina desde un buscador
haz click aqui para ir a la pagina principal