Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: olve en 9 Octubre 2009, 17:10 PM

Título: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 9 Octubre 2009, 17:10 PM
Espero alguien me pueda ayudar

Lo que necesito saber si hay forma de identificar la secuencia de campos (text) de un porgrama exe echo en vb 6.0


Mi .exe tiene 4 text y el otro tambien cuando escribo en los 4 si le envia los datos pero en desorden es decir text1 (exe1) le escribe al text2(exe2)
Existe un API o algo para q los valores sean:
Text1 (exe1) a Text1 (exe2)
Text2 (exe1) a Text2 (exe2)
Text3 (exe1) a Text3 (exe2)

ya tengo su hwnd de cada objeto


Saludos y Muchas Gracias.






Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 9 Octubre 2009, 17:34 PM
Mira si esto te ayuda

http://foro.elhacker.net/programacion_vb/pasar_variables_por_memoria_src-t244803.0.html (http://foro.elhacker.net/programacion_vb/pasar_variables_por_memoria_src-t244803.0.html)
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 9 Octubre 2009, 17:50 PM
Deja checo,

Saludos y Gracias
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Rudy21 en 10 Octubre 2009, 00:56 AM
hummm algo mas facil que se me ocurre es mandar el text asi

|Text1|VALOR DEL TEXT1

etc..

y asi cambias

y al recibirlo haces un SPLIT con |

para saber a que Text va y el valor
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: seba123neo en 10 Octubre 2009, 02:08 AM
pone el codigo, no podemos saber lo que estas haciendo mal...
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 10 Octubre 2009, 03:11 AM

te envio el codigo seba123neo   saludos y gracias :silbar:




Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long
Private Const WM_GETTEXT = &HD: Private Const WM_SETTEXT = &HC
Const BM_CLICK = 245 'Envía un clik al botón
Const WM_SETFOCUS As Long = 7 'Coloca el foco sobre una ventana



Private Sub Command1_Click()
Dim recibir As String
Dim Hwndl As Long
Dim LsTexto1 As Long
Dim LsTexto2 As Long
Dim LsTexto3 As Long
Dim LsFoco As Long
Dim LsFoco1 As Long
Dim LsCommand As Long
Dim LsCommand1 As Long


  Hwndl = FindWindow(vbNullString, "Alberto Olvera")

  LsTexto1 = FindWindowEx(Hwndl, 0, "ThunderRT6TextBox", vbNullString)
  LsTexto2 = FindWindowEx(Hwndl, LsTexto1, "ThunderRT6TextBox", vbNullString)
  LsTexto3 = FindWindowEx(Hwndl, LsTexto2, "ThunderRT6TextBox", vbNullString)
  LsCommand = FindWindowEx(Hwndl, 0, "ThunderRT6CommandButton",vbNullString)

  Call SendMessage(LsTexto1, WM_SETTEXT, Len(Text1.Text), ByVal Text1.Text)
  Call SendMessage(LsTexto2, WM_SETTEXT, Len(Text2.Text), ByVal Text2.Text)
  Call SendMessage(LsTexto3, WM_SETTEXT, Len(Text3.Text), ByVal Text3.Text)

  LsFoco = SendMessage(LsTexto1, WM_SETFOCUS, 0, vbNullString)
 
  LsFoco1 = SendMessage(LsCommand, BM_CLICK, 1, vbNullString)

End Sub

Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 10 Octubre 2009, 03:42 AM
  Hwndl = FindWindow(vbNullString, "Alberto Olvera")

 LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, "Text1") ' Text1 es el nombre del control en el exe2
 LsTexto2 = FindWindowEx(Hwndl, 0, vbNullString, "Text2") ' Text2 es el nombre del control en el exe2
 LsTexto3 = FindWindowEx(Hwndl, 0, vbNullString, "Text3") ' Text3 es el nombre del control en el exe2

 Call SendMessage(LsTexto1, WM_SETTEXT, 0, ByVal Text1.Text) ' no hace falta bufer para enviar
 Call SendMessage(LsTexto2, WM_SETTEXT, 0, ByVal Text2.Text) ' no hace falta bufer para enviar
 Call SendMessage(LsTexto3, WM_SETTEXT, 0, ByVal Text3.Text) ' no hace falta bufer para enviar







Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 10 Octubre 2009, 03:53 AM
Disculpa Dessa pero entonces como le envio los datos del text1 (exe1) al text1(exe2)
???????????








Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 10 Octubre 2009, 04:16 AM
Perdon, es el contenido String de los text del exe2 el que debes usar
El bufer es no hace falta


Dim Hwndl As Long
Dim LsTexto1 As Long
Dim LsTexto2 As Long
Dim LsTexto3 As Long
Hwndl = FindWindow(vbNullString, "Alberto Olvera")

LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, "Text1") ' contenido strng de Text1 en el exe2
LsTexto2 = FindWindowEx(Hwndl, 0, vbNullString, "Text2") '  contenido strng de Text2 en el exe2
LsTexto3 = FindWindowEx(Hwndl, 0, vbNullString, "Text3") '  contenido strng de Text3 en el exe2

Call SendMessage(LsTexto1, WM_SETTEXT, 0, ByVal Text1.Text) ' no hace falta bufer para enviar
Call SendMessage(LsTexto2, WM_SETTEXT, 0, ByVal Text2.Text) ' no hace falta bufer para enviar
Call SendMessage(LsTexto3, WM_SETTEXT, 0, ByVal Text3.Text) ' no hace falta bufer para enviar


PD: así me estan llegando los tres mensajes perfectamente
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 10 Octubre 2009, 04:33 AM
compila y ejecuta el Proyecto1

http://rs355.rapidshare.com/files/290951605/Enviar.zip (http://rs355.rapidshare.com/files/290951605/Enviar.zip)
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 10 Octubre 2009, 06:17 AM
Dessa gracias x el ejemplo y eso es lo q quiero pero veo q utilizas la api SetWindowPos, el exe al que le quiero mandar los textos no tiene programada esta api y no tengo los ejecutables como lo puedo lograr ???????



Saludos...
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 10 Octubre 2009, 06:23 AM
SetWindowPos no tiene nada que ver en el código, la usé en los dos exes solamente para que queden los dos Form en primer plano y los puedas ver mas facil .

PD: los mensajes al segundo ejecutable van a llegar igual, aun si esta minimizado u oculto ya que estan llegando por Handdle. (no por posicion)

Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 10 Octubre 2009, 19:47 PM
realizando otra prueba dejando en blanco la opcin text en blanco no le anecuentra

text1    text1.tex = ""


Otra opcion,

Saludos y GRacias



Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 10 Octubre 2009, 19:56 PM
No te entendí la pregunta o el errror









Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 11 Octubre 2009, 02:31 AM
No me explique, aver si ahora si 


Hwndl = FindWindow(vbNullString, "Alberto Olvera")

LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, "Text1") ' contenido string de Text1 en el exe2

En el objeto Text1 del exe2, si le asigno a la propiedad text nada(text1.text = "")no encuentra el Hwndl

a q se debe ????


espero ser claro

Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: seba123neo en 11 Octubre 2009, 02:54 AM
Cita de: olve en 11 Octubre 2009, 02:31 AM
No me explique, aver si ahora si 


Hwndl = FindWindow(vbNullString, "Alberto Olvera")

LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, "Text1") ' contenido string de Text1 en el exe2

En el objeto Text1 del exe2, si le asigno a la propiedad text nada(text1.text = "")no encuentra el Hwndl

a q se debe ????


espero ser claro

no puede ser, yo lo pruebo, borro todo lo que hay en los textbox del exe2 y me manda los datos igual...
Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 11 Octubre 2009, 03:25 AM
A ver, a mi igual que a Seba, los mensajes me llegan en todos los casos y no me tira ningun error.

Olve, si lo que queres (creo) es borrar el contenido de los 3 Text del segundo ejecutable cuando este se inicia:

Deja (en diseño del segundo ejecutable) la propiedad Text tal cual, "Text1" "Text2"  y "Text3" (para que lleguen los mensajes), luego en en load (tambien del del segundo Ejecutable) agregas estas tres lineas:

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""

Nota: en el primer ejecutable no cambias nada, los mensajes siguen siendo para "text1" "Text2" y "text3"


Era eso ???

Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 11 Octubre 2009, 04:10 AM



El detalle q te comento es cuando en dieño (segundo ejecutable) dejo en blanco la propiedad text ya no llegan los nemsajes este es el detalle

como tu lo mancionas:
Deja (en diseño del segundo ejecutable) la propiedad Text tal cual, "Text1" "Text2"  y "Text3" (para que lleguen los mensajes),

pero si yo dejo:

En (en diseño del segundo ejecutable) la propiedad Text  "" ""  y "" (asi ya NO llegan los mensajes)


porque ???









Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 11 Octubre 2009, 04:28 AM
ejemplo 1)  cambias  la propiedad Text del Text1 (en diseño del segundo exe) por  y

En este tambien tenes que cambiar el mensaje del primer exe:
LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, "y") ' contenido strng de Text1 en el exe2




ejemplo 2)  cambias  la propiedad Text del Text1 (en diseño del segundo exe) por  "y"

En este otro tambien tenes que cambiar el mensaje del primer exe:
LsTexto1 = FindWindowEx(Hwndl, 0, vbNullString, """y""") ' contenido strng de Text1 en el exe2






Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: olve en 11 Octubre 2009, 04:54 AM
Lo q pasa, es q le quiero mandar mensajes a un exe de vb 6.0 del cual no tengo codigo fuente y la unica opcion es atravez de otro (este q estoy tratando de hacer)

lo primero q tengo q hacer es tener el orden de los text, los cuales  esta en blanco lo se por medio del SPY++ de Microsof es por eso el primer codigo q te envie

a la mejor lo estoy haciendo mal y existe otra forma de hacer ???

podras orientarme ??????


Gracias x el tiempo









Título: Re: Como indetificar la secuencia de objetos de un .exe en vb 6.0
Publicado por: Dessa en 11 Octubre 2009, 05:29 AM
Depende de como se programó el ejecutable, yo uso generalmente APISPY pero a veces llegar a un control es muy "enredado". Prueba con SPY++ y de acuerdo a los datos que obtengas vas sacando concluciones si podes llegar por nombre de clase , por nombre de contol, por ambos,  por "order" en el formulario con GetWindow, etc , etc
Tambien seria bueno que busques ejemplos y aprendas a manejar EnumChildProc


PD: Prueba con SPY++ y saca concluciones, si es un Form simple debería ser facil entrarle (dije debería, te repito que a veces no lo es)

S2


EDIT: Si buscas en el foro hay un buen ejemplo de Seba con EnumChildProc