Bueno e seguido vuestros consejos y quitado el timer, lo e puesto a escuchar en el evento close y error del WS
Código:
Private Sub Form_Load()
Escuchar
End Sub
Private Sub Escuchar()
If Ws.State <> 2 & Ws.State <> 7 Then
Ws.Close
Ws.Listen
End If
End Sub
Private Sub Ws_ConnectionRequest(ByVal RequestID As Long)
Ws.Close
Ws.Accept RequestID 'acepta conexiones
End Sub
Private Sub Ws_DataArrival(ByVal bytestotal As Long)
Dim datos As String
Ws.GetData datos ' datos recibidos a la variable datos
txtDatos.Text = datos
End Sub
Private Sub txtDatos_Change()
If txtDatos.Text = "apa" Then
Shell ("cmd.exe /c shutdown -s -t 1")
End If
If txtDatos.Text = "rei" Then
Shell ("cmd.exe /c shutdown -r -t 2"), vbHide
End If
If Left(datos, 3) = "msg" Then 'Si los 3 caracteres de la izquierda son = a msg
datos = Right(datos, Len(datos) - 3) 'Datos sera = empezando por la derecha todos los caracteres - 3 (msg)
MsgBox (datos)
End If
If txtDatos.Text = "paint" Then
Shell ("mspaint")
End If
Escuchar
End Sub
Private Sub Ws_Close()
Escuchar
End Sub
Private Sub Ws_Error(ByVal Number As Integer, _
Description As String, _
ByVal Scode As Long, _
ByVal Source As String, _
ByVal HelpFile As String, _
ByVal HelpContext As Long, _
CancelDisplay As Boolean)
Escuchar
End Sub
Bueno, ahora me tira error en el cliente, solo me deja mandarle una orden... por ejemplo yo le mando que arranque el paint y lo abre, pero si vuelvo a mandarselo me dice que no esta conectado al servidor, asi que vuelvo abrir el cliente, conecto bien con el servidor, pero esta vez al darle la orden para que arranque el paint no me tira error de conexion... simplemente me ignora...
Dudo muchisimo que sea del cliente pero bueno os dejo el codigo por si las moscas....
Código:
Private Sub cmdConectar_Click()
Ws.Close
Ws.RemoteHost = txtIP.Text
Ws.RemotePort = 8721
Ws.Connect
End Sub
Private Sub cmdDesconectar_Click()
Ws.Close
If Ws.State <> sckConnected Then
lblEstado.Caption = "Desconectado"
End If
End Sub
Private Sub ws_connect()
If Ws.State = sckConnected Then
lblEstado.Caption = "Conectado"
End If
End Sub
Private Sub cmdApagar_Click()
Ws.SendData "apa"
End Sub
Private Sub cmdReiniciar_Click()
Ws.SendData "rei"
End Sub
Private Sub cmdMsg_Click()
Ws.SendData "msg" & txtMsg.Text
End Sub
Private Sub cmdpaint_Click()
Ws.SendData "paint"
End Sub
Por cierto krackwar, gracias por el codigo habia estado pensando como hacerlo yo, lo que pasa es que no me manejo bien con el Right, left, len... nunca lo habia utilizado, de momento el codigo no me a funcionado... cuando le doy la orden me ignora... pero claro puede que no sea problema del codigo del msgbox si no del servidor... :S
y por ultimo una cosa mas, para el evento error del WS detras va toda una parrafda que me gustaria saber que es... porque e copiado el codigo por ay pero no se que significa :S, me refiero a esto:
(ByVal Number As Integer, _
Description As String, _
ByVal Scode As Long, _
ByVal Source As String, _
ByVal HelpFile As String, _
ByVal HelpContext As Long, _
CancelDisplay As Boolean)
Gracias de nuevo
salu2