En primer lugar, no sabia si debia crear un post nuevo o volver a postear en el que pedi ayuda con el chat. Agradeceria al admin que me lo aclarara para asi no estorbar. Este codigo lo que quiero que haga es apagar un ordenador de forma remota. He visto que la API ExitWindowsEx se utiliza con una sintaxis especial. Posteo el codigo y comento mejor:
Cliente:
Option Explicit
Private Sub Command1_Click()
Winsock1.RemotePort = 9000
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub
Private Sub Command2_Click()
Dim apagar As Long
apagar = 1
Winsock1.SendData apagar
End Sub
Private Sub Command3_Click()
Dim reiniciar As Long
reiniciar = 2
Winsock1.SendData reiniciar
End Sub
Aqui lo que hago es asiganrle el valor 1 a apagar y a reiniciar 2. Por qué? Porque asi con una instruccion condicional en el servidor podre establecer lo que quiero que haga (corrijanme si esto no se puede hacer).
Servidor:
Option Explicit
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)
Private Sub Form_Load()
Winsock1.LocalPort = 9000
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As Long
Winsock1.GetData datos
If datos = 1 Then datos = ExitWindowsEx(1, 0&)
If datos = 2 Then datos = ExitWindowsEx(2, 0&)
End Sub
EL servidor es sencillo, establezco el puerto de escucha acepto la conexion y recibo los datos. La duda viene a continuación. En el evento DataArrival recibo los datos y les asigno como variable datos, luego estblezco una condición para que dependiendo del valor de la cadena de datos que entre reinicie o apague.
PEro señores el codigo no funciona, compila bien y todo eso pero cunado aprito en apagar x ejemplo no se apaga. No salta ningun error ni nada pero no funciona. Espero me puedan decir cual es el error en el code. Grcias de nuevo.