Cita:  Mensaje Original por cadrogui 
 ... If SendData <> 1 Then
Text2.Text = Text2.Text + "     <La unidad se abrio>" & vbCrLf
Else
Text2.Text = Text2.Text + "     <Error en el host>" & vbCrLf
End If ... 
    ok, en primer lugar, con esta línea no vas a conseguir nada, ya que SendData no tiene valor.
por otro lado, todo lo que este después del Winsock.SendData se va a ejecutar seguidamente a este, por lo que no podés controlar aquí si se recibió o no. Para eso tenes que usar las propiedades WinSock_Error, para verificar si hubo algún error, WinSock_SendComplete, te comunica que el envío tuvo éxito, también tenes WinSock_SendProgress, pero en este caso no te será muy útil.
lo que yo haría sería lo siguiente: 
Private Sub abrir_Click()
On Error GoTo error 
ProgressBar1.Value = 0 
Dim abrir_cd As String
abrir_cd = abrir.Name
Winsock1.SendData abrir_cd
Text2.Text = Text2.Text + "Abriendo la unidad de Cd..." & vbCrLf 
ProgressBar1.Value = 50 
Exit Sub
error:
Text2.Text = Text2.Text + "Error en la Comunicación.." & vbCrLf
Shape1.FillColor = &HFF& 
End Sub  
Private Sub Winsock1_Error( ...) 
Text2.Text = Text2.Text + " <Error en el host>" & vbCrLf  
end Sub   Private Sub Winsock1_SendComplete() 
Text2.Text = Text2.Text + " <La unidad se abrio>" & vbCrLf 'en realidad para saber si abrió el servidor tendría que enviarte una confirmación 
ProgressBar1.Value = 100  
end Sub  
una recomendación que te doy es que incluyas lo siguiente al trabajar con winsock  
Private Sub Winsock1_Close() 
Winsock1.Close  
end Sub  
te puede ayudar a evitar algunos problemas en la comunicación. 
espero te sea útil. 
saludos.