4 nov. 2012

Desarrollando una aplicación gráfica para apagar el sistema automáticamente

Hay comandos en GNU/Linux que permites realizar un apagado de nuestro sistema. Este apagado se puede hacer, bien indicando en cuántos minutos queremos que se apague, o bien indicando la hora. Si queremos la opción de minutos restantes:
shutdown -h minutos
Mientras que si preferimos indicar la hora:
shutdown -h hh:mm
En caso de haber introducido la opción de apagado automático y que queramos cancelarla:
shutdown -c
Utilizando estos comandos y la potencia de gambas podemos desarrollar fácilmente una aplicación gráfica que permita el apagado del sistema. Veámos cómo hacerlo. 
Lo primero es crear el diseño de nuestra aplicación. En mi caso he decidido no esmerarme mucho, y el resultado obtenido es 
Aspecto visual
En esta ventana tenemos la opción de elegir ambos tipos de apagado y además nos muestra el comando que se envía en consola. Por simplicidad a la hora de realizar la programación, requiere que en el caso de elegir la opción "Apagar a las" se introduzcan dos dígitos en cada recuadro y que los valores sean válidos. A continuación se muestran ejemplos con las diferentes opciones en funcionamiento
Ejecutando la opción "Apagar en"

Ejecutando la opción "Apagar a las"

Ejecutando la opción "Cancelar apagado"
El código que ejecuta esta aplicación es


' Gambas class file

Public minutosRestantes As String
Public minutos As String
Public hora As String
Public comando As String
Const cancelar As String = "gksu -l shutdown -c"
Const apagar As String = "gksu -l shutdown -h "

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub btnCancelar_Click()

  comando = cancelar  'Asignamos como comando la opción cancelar
  txtComando.text = comando
  Shell comando 'Enviamos el comando a la shell
  

End

Public Sub btnAceptar_Click()

  If rdbCuentaAtras.value = True Then   'Comprueba si el boton de cuenta atras esta activo
    minutosRestantes = vlbMinutosRestantes.Text   
    comando = apagar & minutosRestantes   'Si lo está, envía el comando de cuenta atrás
    txtComando.text = comando
    Shell comando
  Else 'Si no lo esta, entonces se envia la hora a la cual queremos apagar la computadora
    hora = vlbHora.Text
    minutos = vlbMinutos.Text
    comando = apagar & hora & ":" & minutos  'Concatena para formar el comando
    Shell comando
    txtComando.text = comando
  Endif  '

End