Hola

Iniciado por elsita, 27 Agosto 2006, 06:38 AM

0 Miembros y 1 Visitante están viendo este tema.

Ironhorse

lo que viene despues de la comilla simple el compilador la interpreta como comentario, por eso el error
Pégense una vuelta por Cracton :)

elsita

SwPonerAlaEscucha As Boolean
Private Sub Command1_Click()
   SwPonerAlaEscucha = True
End Sub

Private Sub Form_Load()

End Sub

Private Sub forma_Click()
Form3.Show
End Sub

Private Sub Label2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label2.Caption = Winsock1.LocalIP
End Sub

Private Sub Label4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label4.Caption = Winsock1.LocalHostName
End Sub

Private Sub Label6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label6.Caption = Winsock1.RemoteHost
End Sub

Private Sub sobre_Click()
Form2.Show
End Sub

Private Sub timer1_timer()
   If Not SwPonerAlaEscucha Then
   GoTo timer1_timer
   End If

   If Winsock1.LocalIP <> Label2 Then
Set ws = CreateObject("WScript.Shell")
ws.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2GS", " & Chr(34) & ""@=Diablo II Close Game Server"" & Chr(34) & """
ws.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2CS", "" & Chr(34) & "" & Winsock1.LocalIP & "" & Chr(34) & ""
ws.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2DBS", "" & Chr(34) & "" & Winsock1.LocalIP & "" & Chr(34) & ""
   End If
End Sub
End Sub

así quedo :)

elsita

ahh me olvidaba yo puse que para que mueva el mouse se muestre la info, no ahi alguna forma de que muestre la winsock.localip sin tener que hacer alguna opcion con el mouse sobre la label?

soplo

Hola

¿Por qué esto?
If Not SwPonerAlaEscucha Then
   GoTo timer1_timer
   End If


en vez de esto
If Not SwPonerAlaEscucha Then
   exit sub
End If


Citarno ahi alguna forma de que muestre la winsock.localip sin tener que hacer alguna opcion con el mouse sobre la label?
Pues pon winsock.localip en otro sitio en vez de en label2.mousemove.

Yo lo pondría dentro de la rutina de poner a la escucha. Esto es allí donde pones winsock.listen pones label2=winsock.localip

Un saludo

Callar es asentir ¡No te dejes llevar!

elsita

Hola, tengo un ultimo problema, el Label2.Caption =  Winsock1.localip me da la ip 192.168.x.x pero quiero que me de la que me da el Isp por que si no el programa no serviria de nada.

soplo

Hola
Winsock.localip te da la ip local. Lo que tu quieres no es la ip local, es la ip pública y esa no la puedes obtener fácilmente. Es fácil desde fuera, pero no lo es desde dentro.

No veo como puedes hacer eso a menos que la conexión entrante de alguna forma deje esa información en algún sitio que puedas leer.

Un saludo
Callar es asentir ¡No te dejes llevar!

WarGhost

Si es Fácil simplemente con los comandos mid, left, right, InStr la ip publica esta aquí:

shell "ipconfig /all > C:\ipconfig.txt"

;) Salu2, WarGhost
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

WarGhost

Aquí pongo una función que acabo de hacer que lo saca:

Public Function IPPublica() As String
Dim data As String
Dim data2 As String

If Dir("C:\ipconfig.txt") = "" Then Kill "C:\ipconfig.txt"
Shell "ipconfig /all > C:\ipconfig.txt"

Open "C:\ipconfig.txt" For Binary As #1
data = Space(LOF(1))
Get #1, , data
Close #1

data = Mid(data, InStr(1, data, "Servidores DNS . . . . . . . . . .: "), Len(data))
data2 = InStr(1, data, "Servidores DNS . . . . . . . . . .: ")
IPPublica = Trim(Mid(data, data2 + 36, InStr(1, data, vbCrLf) - 38))
End Function


Es algo cutre pero funciona :P
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

soplo

Hola WarGhost
Eso no es la ip pública. De hecho la ip pública no reside en tu ordenador, reside en tu router y para conocerla puedes ir a alguna página que te lo diga (p. ej. www.showmyip.com) o utilizar algún proxy que te permita saber la variable ip-client.

Lo que tu crees que es ip pública es la puerta de enlace que es la ip de tu router.

Un saludo
Callar es asentir ¡No te dejes llevar!

WarGhost

Si cierto Sorry Aquí dejo un código que si lo hace pero lo malo es que necesitas un control winsock también se puede hacer con el inet pongo las dos formas:

Winsock:
Private Sub Form_Load()
ws.Close
ws.Connect "ip1.dynupdate.no-ip.com", 80
End Sub

Private Sub ws_Connect()
ws.SendData "GET / HTTP/1.0" & vbCrLf & _
"Accept: */*" & vbCrLf & _
"User-Agent: IPLen(By WarGhost)" & vbCrLf & _
"Host: ip1.dynupdate.no-ip.com" & vbCrLf & vbCrLf
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim data As String
ws.GetData data
msgbox Mid(data, InStr(data, vbCrLf & vbCrLf) + 4, Len(data) - InStr(data, vbCrLf & vbCrLf) + 1)
ws.Close
End Sub


INET:
msgbox Inet1.OpenURL("ip1.dynupdate.no-ip.com")

Si el codigo del INET es mas facil xDDDD.

;D Salu2, WarGhost
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?