Pues mira, para apagar la pc, necesitas de una función de API, se llama InitiateSystemShutdown. Para comprobar la hora en que se puede apagar, puedes usar un timer, para que cada segundo compruebe si ya se debe apagar la pc o no.
Declaración de la función
'Esta declaración copiala a un modulo bas
Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" _
(ByVal lpMachineName As String, ByVal lpMessage As String, _
ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, _
ByVal bRebootAfterShutdown As Long) As Long
Comprobación de la hora de apagado, con el evento timer del control timer
Private Sub Timer1_Timer()
Dim nombrePC As String
Dim horaActual As String, horaApagado As String
horaActual = Format(Time, "hh:mm:ss AM/PM")
horaApagado = Format(Text1.Text, "hh:mm:ss AM/PM")'La hora de apagado está en un text
nombrePC = "\\192.168.1.102" 'Aki debes poner la IP o nombre de la computadora
'Si ya pasó la hora de apagado, psss apagala
If horaActual >= horaApagado Then
'Llamo a la función de apagado, para que se apague en 10 segundos
InitiateSystemShutdown nombrePC, "El sistema se está apagando", 10, True, False
Timer1.Enabled = False'Deshabilito el timer
End If
End Sub
Espero te sirva, aqui debes poner tu manualmente, la ip, o el nombre de la maquina. Pero con el control winsock puedes extraer la IP de tu maquina.