Leer datos de otra aplicacion (VB.NET)

Iniciado por elmaro, 13 Enero 2009, 03:10 AM

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

elmaro

Buenasssss
Tengo una duda, estoy haciendo una aplicacion y necesito sacar datos de otra.
Por ejemplo... hay una aplicacion con varios campos de texto... el objetivo es obtener esos datos pedo desde una app echa por mi.
Ejemplo practico:
Abro Inicio - Ejecutar. => Escribo la ruta de un archivo a ejecutar, por ejemplo "notepad.exe" (Todavia no apreto Enter)
Abro mi aplicacion y obtengo lo que hay escrito en el campo de texto del cuadro Ejecutar.... en este caso seria: "notepad.exe"
Me explico?

Si a alguno se le ocurre me seria de ayuda. Mientras tanto voy a seguir buscando y si lo encuentro lo posteo.

Gracias!

seba123neo

Hola, debes sacar el texto de la ventana, lo podes hacer facil con api's como findwindow y demas...sacando el nombre de clase de la ventana y del control textbox...

saludos.
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

elmaro

#2
Cita de: seba123neo en 13 Enero 2009, 03:27 AM
Hola, debes sacar el texto de la ventana, lo podes hacer facil con api's como findwindow y demas...sacando el nombre de clase de la ventana y del control textbox...

saludos.

Entiendo...
y en el caso de que sea un RichTextBox?  :laugh:
Por ahi lei...dicen... es casi imposible. Tengo mis dudas
no creo que ya tenga que explicar que quiero hacer jaja

Saludos!

elmaro

#3
Bueno... vamos avanzando
Tengo el codigo para obtener el handle de la ventana... ahora mi problema es como a partir de ese handle puedo obtener los controles que tiene esa ventana.
Sigo investigando, si alguien me da una mano, sera aceptada.

Saludos!



    Private Declare Function GetForegroundWindow Lib "user32.dll" () As Int32
    Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Int32, ByVal lpString As String, ByVal cch As Int32) As Int32


Public Function GetActiveWindowTitle() As String
        Dim MyStr As String
        MyStr = New String(Chr(0), 100)
        GetWindowText(GetForegroundWindow, MyStr, 100)
        MyStr = MyStr.Substring(0, InStr(MyStr, Chr(0)) - 1)

        Return MyStr
    End Function

Dim nWnd As IntPtr
     
'nWnd contiene el handle
nWnd = FindWindow(Nothing, GetActiveWindowTitle)



EDITADO:
Para orientar un poco
http://www.recursosvisualbasic.com.ar/htm/listado-api/195-obtener-texto-de-ventanas-externas.htm

elmaro

Me acabo de resignar a hacer esto. No puedo conseguir el nombre de la clase de este control. (es donde se lee la conversacion de msn)
Obtuve mediante funciones estos dos nombres: DirectUIHWND que creo que es para skins y el IMWindowClass que es donde uno va tipiando el mensaje si no me equivoco. Pero el otro control... ni aparece.
Asi que voy a tener que usar otro metodo porque esta app la tengo que tener mañana :S

Si a alguien le interesa posteo el code de como saque esa informacion.

seba123neo

manualmente con el SPY++ de Microsoft podes obtener los nombres de clase de las ventanas y su handle...o sino con api's podes hacerlo con EnumChildWindows.pero hacelo con el Spy que es mas rapido...

saludos.
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