ejecutar una aplicacion dentro de otra

Iniciado por abel_c_b, 1 Junio 2008, 03:36 AM

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

abel_c_b

No tengo ningun problema con este codigo, se ejecuta perfecto, pero la cuestion esta es cuando la aplicacin es externa, como podria averiguar la clase y el caption de una plaicacion externa? saludos

seba123neo

#31
ahora preguntas eso,ya hace muchos post atras lo tendrias que haber preguntado,pero bueno mira hay muchisimas formas de saber el nombre de clase,pero la mas facil es con la aplicacion que viene con visual basic llamada Spy++...supongamos que yo quiero escribir automaticamente en el Bloc de Notas de windows sabiendo el nombre de clase del control que te permite escribir adentro,aca te hago una captura de como saque el nombre de la ventana para escribir con el Spy++:

este es el nombre de clase de la ventana padre llamada "Notepad":



este es el nombre del control dentro de la ventana donde se escribe llamado "Edit":



para saber los datos de la ventana tenes que arrastrar el "iconito" sobre una ventana y te va diciendo las partes que la forman,en este caso fijate que esta seleccionado el area de escritura del bloc de notas y al lado en la ventana estan los datos...

el handle es el numero(Long) que le asigna windows a cada ventana ,es como si fuera el nuero que identifica esa ventana,sabiendo eso,podes hacer un monton de cosas,cerrarla,moverla,resizarla,cambiar valores,etc....

el Class es el nombre de clase del control,o sea cada control tiene su nombre...ese es el que te tenes que fijar.....
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

abel_c_b

Despues de tanto tiempo LO CONSEGUI, jeje, fue muy complicado y sin su ayuda no lo habria conseguido, bueno posteo una parte del code para que se den cuenta:

Private Sub Timer1_Timer()
cont = cont + 1
Label1.Caption = cont
PosX = 70
PosY = 236
l = SetCursorPos(PosX, PosY)
lpRect.Left = 26
lpRect.Top = 216
PosXY = (PosY - lpRect.Top) + (PosX - lpRect.Left)

If cont = 5 Then
pulsar FindCommand(Me.hWnd)
End If

End Sub

Private Function FindCommand(ByVal lHost As Long) As Long
    FindCommand = FindWindowEx(lHost, Picture1.hWnd, "Button", "Iniciar")
End Function

Private Sub pulsar(ByVal hn As Long)

Call mouse_event(MOUSEEVENTF_LEFTDOWN, PosXY, PosXY, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, PosXY, PosXY, 0, 0)

End Sub

No me funcionaron las Call SendMessage que cobein muy amablemente me paso pero con las llamadas del mouse_event todo se soluciono, definitivamente tuve que tirarme casi 11 Horas de leer y comprension porque recibi codigo con el cual nunca habia trabajado, pero bueno ya me enrole,  :laugh:,  me demore mucho para que funcionara pero vale la pena.

Gracias a todos por su tiempo, y ahi nos vemos.  ;D ;D ;D ;D