2008-12-17 12 views

Respuesta

8

Echa un vistazo a ManagedSpy, se proporciona el código fuente. (link)

+0

Buen enlace! Parece que ManagedSpyLib podría ser para espiar otras aplicaciones administradas, ¿funciona en aplicaciones no administradas? En ese caso, es posible que desee mirar Spy ++. – HanClinto

0

"Usted puede ser capaz de utilizar System.Diagnostics.Process.GetProcessesByName (" NombreProc ") y el recuperar las ventanas principales de manejar, a partir de ahí se puede utilizar la API de Win32 para obtener el identificador del cuadro de texto se usa para mostrar el texto que desea. Con el control del cuadro de texto puede obtener o establecer los contenidos. Soy no hay nada con la API win32 pero con un poco de investigación he podido para realizar tareas similares. Espero esto ayuda "

Tomado de aquí: http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic1657.aspx

16

Es posible que desee consultar el WM_GETTEXT message. Esto puede ser used to read text from other windows - es una parte arcaica de la API de Windows, y si está en C#, tendrá que p/invocar para ello.

Consulte this page para ver un ejemplo de cómo hacer esto en C#.

Básicamente, primero FindControlEx() para obtener el control de la ventana que desea (por título).

En segundo lugar, enumera recursivamente los controles en esa ventana con EnumChildWindows() para encontrar todos los controles secundarios de la ventana y todos los secundarios de los niños hasta que tenga un mapa completo del formulario de destino.

Aquí está una parte seleccionada de Theta-ga's excellent explanation de Google Answers:

para obtener el contenido de cualquier control de cuadro de texto o cuadro de lista, todo lo que necesitamos es que es identificador de ventana. Si ya ha obtenido el identificador de ventana, pase a la parte 2 de la explicación.

PARTE 1: Obtención de la palanca de control

  • Para obtener el identificador de un control, primero obtener el identificador de la misma ventana padre s?. Podemos hacer esto utilizando el método Win32 FindControlEx(). Este método toma el título de la ventana (como 'Calculadora') y/o su nombre de clase, y devuelve su manejador.
  • Una vez que tenemos el identificador de ventana principal, podemos llamar al método Win32 EnumChildWindows. Este método tiene un método de devolución de llamada que llama con el control de cada control secundario que encuentra para el elemento primario especificado. Por ejemplo, si llamamos a este método con el control de la ventana de la Calculadora, llamará al método de devolución de llamada con el control de texto, y luego de nuevo con los controles de cada uno de los botones en la ventana de la Calculadora, y así sucesivamente .
  • Como solo estamos interesados ​​en el manejo del control del cuadro de texto, podemos verificar la clase de la ventana en el método de devolución de llamada. El método Win32 GetClassName() se puede usar para esto. Este método toma un identificador de ventana y nos proporciona una cadena que contiene el nombre de clase. Entonces, un cuadro de texto pertenece a? Edit? clase, un cuadro de lista para la clase 'ListBox' y así sucesivamente. Una vez que haya determinado que tiene el control adecuado, puede leer su contenido.

PARTE 2: Lectura del contenido de un control

  • se puede leer en el contenido de un control mediante la función de Win32 SendMessage(), y usarlo para pasar el mensaje WM_GETTEXT al control de destino. Esto le dará el contenido de texto del control. Este método funcionará para un cuadro de texto, botón o control estático.
  • Sin embargo, el enfoque anterior fallará si intenta leer los contenidos de un cuadro de lista. Para obtener el contenido de un cuadro de lista, primero debemos usar SendMessage() con el mensaje LB_GETCOUNT para obtener el recuento de los elementos de la lista. Luego debemos llamar a SendMessage() con el mensaje LB_GETTEXT para cada elemento en la lista.
+0

gracias por esta información útil. Pregunta rápida, si tengo coordenadas de rectángulo (es decir, x, y, ancho, alto) - Estoy interesado en agarrar el texto de ese rectángulo, no necesariamente un control de formulario de Windows como un cuadro de texto/área. ¿Sabes si esto es posible? – zenocon

0

Codificando The Wheel como un artículo sobre cómo pudo obtener información de la Aplicación de Poker.

Comprobar: deconstructing-the-poker-client-1. Esto puede ser útil.

0

screenscraperstudio.com

Crea codigo VB de "su diálogo raspador".

no he comprado todavía, por lo que podría estar equivocado, pero es la única manera (por debajo de rodar su propio uso de la mensajería Spy ++ como otra elude anteriormente ...)

Cuestiones relacionadas