Ferramentas de Usuário

Ferramentas de Site


dev_geral:pascal:pronto-a-usar:shutdown

Configuração e execução de controlos simples de energia

Este programa é um bom esqueleto, muito completo, pronto a ser adaptado e expandido por cada um de vós.

PROGRAM Shutdown;
USES crt, dos;
 
VAR Option : char; // Opções de operação
    Time : word;   // Tempo até encerrar
 
CONST Bool2OnOff : array[boolean] of string = ('ON', 'OFF');
      // Converte um Boolean num ON ou OFF
 
 
FUNCTION Word2String(const Number : word) : string;
(* Devolve um WORD numa STRING *)
begin
     str(Number, Word2String);
end;
 
 
PROCEDURE Configurate_Hibernate;
(* Configurar a Hibernação *)
var VSwitch : char;
 
   procedure CH(const Status : Boolean);
   (* Executa a escolha do utilizador - necessárias permissões de Administrador *)
   begin {CH}
        Exec('C:WINDOWSsystem32cmd.exe', '/C powercfg -H ' + Bool2OnOff[Status]);
   end;  {CH}
 
begin {Configurate_Hibernate}
     ClrScr;
     WriteLn('=== A CONTROLAR "HIBERNAR" ===');
     repeat
           WriteLn('1 - Activar');
           WriteLn('0 - Desactivar');
           VSwitch := ReadKey;
     until (Char(VSwitch) in ['0', '1']);
     CH(boolean(word(VSwicth)));
end;  {Configurate_Hibernate}
 
 
PROCEDURE Execute_Control(const Operation : string);
(* Executar controlo de energia *)
begin
     Exec('C:WINDOWSsystem32cmd.exe', '/C shutdown /' + Operation);
end;
 
 
BEGIN  (* MAIN *)
     repeat
           ClrScr;
           WriteLn('====== SHUTDOWN CONTROL ======');
           Writeln('== CONFIGURACAO ==');
           WriteLn('1 - Hibernar');
           WriteLn('== CONTROLO ==');
           WriteLn('E - Encerrar');
           WriteLn('H - Hibernar');
           WriteLn('== PROGRAMA ==');
           WriteLn('ESC - Sair');
 
           repeat
                 Option := UpCase(ReadKey);
           until (Char(Option) in ['1', 'E', 'H', #27]);
 
           case Char(Option) of
                '1' : Configurate_Hibernate;
                'H' : Execute_Control('H');
                'E' : begin
                      repeat
                            Write('Tempo ate encerrar, em segundos (10-99): ');
                            ReadLn(Time);
                      until (Time in [10..99]);
                      Execute_Control('S /T ' + Word2String(Time) + ' /C "Em teste!"');
 
                      //PARA TESTES!
                      Delay(2000);
                      Exec('C:WINDOWSsystem32cmd.exe', '/C shutdown /a');
                      end;
           end;
 
           if not (Option = #27) then begin
              WriteLn;
              Write('Pausa... ENTER para continuar...');
              repeat Option := ReadKey until (Option = #13);
           end;
     until (Option = #27);
END.
dev_geral/pascal/pronto-a-usar/shutdown.txt · Última modificação em: 2018/05/14 21:37 (edição externa)