Hola gente.
Resulta que co mi troyano, me surgio otra duda.
Para conectarse con el servidor, yo tipeo le comando connect y me pide los datos.
Pero a mi me gustaria poder conectarme escribiendo:
connect -port 8865 -ip 231.62.135.21 -password 123
Mi duda, es que yo no se como hacer para que identifique lo que esta seguid de -port y lo ponga como puerto remoto del winsock. l omism ocon password e ip.
Me pueden ayudar?.
Saludos
Utiliza las funciones InStr, Mid y Val para obtener los parámetros. Por ej:
Sub ParseParam(ParamSpec As String)
Dim iFirstPos%, iLastPos%
Dim iPort%, sIp$, sPass$
iFirstPos = InStr(1, ParamSpec, "-port", vbTextCompare)
If iFirstPos Then
'5 = Len("-port")
'
iPort = Val(Mid$(ParamSpec, iFirstPos + 5))
End If
iFirstPos = InStr(1, ParamSpec, "-ip", vbTextCompare)
If iFirstPos Then
iLastPos = InStr(iFirstPos + 4, ParamSpec, " ")
If iLastPos Then
'3 = Len("-ip")
'
sIp = Mid$(ParamSpec, iFirstPos + 3, iLastPos - iFirstPos - 3)
Else
'Por si es el último parámetro que se especifica.
'
sIp = Mid$(ParamSpec, iFirstPos + 3)
End If
End If
iFirstPos = InStr(1, ParamSpec, "-password", vbTextCompare)
If iFirstPos Then
iLastPos = InStr(iFirstPos + 10, ParamSpec, " ")
If iLastPos Then
'9 = Len("-password")
'
sPass$ = Mid$(ParamSpec, iFirstPos + 9, iLastPos - iFirstPos - 9)
Else
'Por si es el último parámetro que se especifica.
'
sPass$ = Mid$(ParamSpec, iFirstPos + 9)
End If
End If
End Sub
Y la próxima vez que postees algo ponele un título adecuado.
Saludos.
La verdad al leer el code me quede en el sub... xD.
No viene la caso, ahora lo pruebo y te cuento.
Respecto a lo del titulo no hay drama.
Saludos
Bueno, lo probe y funciona a medias.
Cuando quiero recuperar la informacion de la funcion, so logro que muestre el parametro password.
Este es el codigo que tengo.
Sub ParseParam(ParamSpec As String)
Dim iFirstPos%, iLastPos%
Dim iPort%, sIp$, sPass$
iFirstPos = InStr(1, ParamSpec, "-port", vbTextCompare)
If iFirstPos Then
'5 = Len("-port")
'
iPort = Val(Mid$(ParamSpec, iFirstPos + 5))
frmClientMain.txtLog.Text = iPort
End If
iFirstPos = InStr(1, ParamSpec, "-ip", vbTextCompare)
If iFirstPos Then
iLastPos = InStr(iFirstPos + 4, ParamSpec, " ")
If iLastPos Then
'3 = Len("-ip")
'
sIp = Mid$(ParamSpec, iFirstPos + 3, iLastPos - iFirstPos - 3)
frmClientMain.txtLog.Text = sIp
Else
'Por si es el último parámetro que se especifica.
'
sIp = Mid$(ParamSpec, iFirstPos + 3)
frmClientMain.txtLog.Text = sIp
End If
End If
iFirstPos = InStr(1, ParamSpec, "-password", vbTextCompare)
If iFirstPos Then
iLastPos = InStr(iFirstPos + 10, ParamSpec, " ")
If iLastPos Then
'9 = Len("-password")
'
sPass$ = Mid$(ParamSpec, iFirstPos + 9, iLastPos - iFirstPos - 9)
frmClientMain.txtLog.Text = sPass$
Else
'Por si es el último parámetro que se especifica.
'
sPass$ = Mid$(ParamSpec, iFirstPos + 9)
frmClientMain.txtLog.Text = sPass$
End If
End If
End Sub
Private Sub Command1_Click()
Dim command As String
command = txtCommand.Text
Call ParseParam(command)
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & "Command> " & command & vbCrLf & sPass$
End Sub
Private Sub Form_Activate()
txtCommand.SetFocus
End Sub
Teens idea de que esta mal?
Saludos
Simplemente declara las variables iPort%, sIp$, sPass$ como globales.
Si tienes visual basic 6, puedes hacerlo también de esta manera:
Option Explicit
'Variables globales
Dim sIp As String
Dim sPuerto As Integer
Dim sPassword As String
Private Sub Command1_Click()
Dim Comando() As String
Dim i As Integer
Comando = Split(Text1.Text, " ")
For i = 0 To UBound(Comando)
Select Case LCase(Comando(i))
Case "-ip"
sIp = Comando(i + 1)
Case "-port"
sPuerto = Comando(i + 1)
Case "-password"
sPassword = Comando(i + 1)
End Select
Next i
Text1.Text = sIp & vbCrLf & sPuerto & vbCrLf & sPassword
End Sub
Mas que nada, si tienes una versión inferior del Visual Basic 6, el comando "split()" no está, por tanto te toca hacerlo por método de búsqueda con el InStr y Mid como bien dijo Anhur.
Un Saludo.
Tengo el vb6.
Ahora mismo estoy en un cyber porque un pariente esta en mi pc.
En un rato cuando se valla preubo tu codigo y te cuento.
Saludos.
jooder!!! cuanto tiempo llevo buscando esto!!! que wapo!
Oye sabriais como hacer para que si yo pongo en un text box msgbox "blabla" se ejecute eso como si yo lo hubiera escrito en el codigo???
Gracias
al Probarlo, sale esto:
0
Estoy usando este comando:
connect -port 3265 -ip 65.26.156.152 -password 32hgh
Y el code haci:
'Variables globales
Dim sIp As String
Dim sPuerto As Integer
Dim sPassword As String
Private Sub Command1_Click()
Dim Comando() As String
Dim i As Integer
Comando = Split(txtLog.Text, " ")
For i = 0 To UBound(Comando)
Select Case LCase(Comando(i))
Case "-ip"
sIp = Comando(i + 1)
Case "-port"
sPuerto = Comando(i + 1)
Case "-password"
sPassword = Comando(i + 1)
End Select
Next i
txtLog.Text = sIp & vbCrLf & sPuerto & vbCrLf & sPassword
End Sub
Private Sub Form_Activate()
txtCommand.SetFocus
End Sub
Que puede ser?
a mi me funciono lo que pusieron
Ezactamente como lo estas usando?
He encontrado los errores que has provocado:
De la forma que te dije yo, en el código tu escribes esto
Comando = Split(txtLog.Text, " ")
Mientras que según lo que he visto, tu no quieres sacar el comando del txtLog, sino del txtCommand. Por tanto será:
Comando = Split(txtCommand.Text, " ")
Para la forma que dijo Anhur, me equivoqué con lo de las variables globales, porque creía que lo utilizabas de otra manera. El error está en:
frmClientMain.txtLog.Text = iPort
frmClientMain.txtLog.Text = sIp
frmClientMain.txtLog.Text = sPass
Tendrías que poner:
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & iPort & vbCrLf
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & sIP & vbCrLf
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & sPass & vbCrLf
Para no borrar el contenido del cuadro de texto.
Por tanto, ahí están los dos errores.
Para alwar, si quieres ejecutar el comando MsgBox cuando lo escribes en tiempo de ejecución en un cuadro de texto, lo que tendrías que hacer, por ejemplo, sería:
Private Sub Command1_Click()
If LCase(Left$(text1.Text, Len("msgbox "))) = "msgbox " Then
If Len(text1.Text) <> Len("msgbox ") Then
MsgBox Right$(text1.Text, Len(text1.Text) - Len("msgbox "))
End If
End If
text1.Text = ""
End Sub
Pero esque los errores estupidos que cometo... solo yo...
Saludos y gracias.
.. xavierote pero yo me referia que valiese cualquier comando.. se podria?
Ahhh... ya se lo que quieres. Pues puede utilizar el Microsoft Script Control, que sirve para hacer scripts en varios lenguajes relacionados con visual basic y se pueden ejecutar en tiempo de ejecución.
ah! osea que ese control vale para eso? vale pos ya busco en google sobre ese control, o en la msdn