NET código de “escuchar” a una aplicación de oficina (obtener los acontecimientos planteada por el usuario)

StackOverflow https://stackoverflow.com/questions/892187

Pregunta

Estoy a punto de rehacer una aplicación para el aprendizaje electrónico. Pero ahora quiero aprovechar esta nueva versión a un nuevo nivel.

Así que este escenario: un usuario abre mi aplicación. Él / ella escoge entonces para ser entrenados en una de las aplicaciones más comunes de MS Office (Word, Excel, Outlook, etc.).

Mi aplicación dará las instrucciones del usuario sobre qué hacer: crear un nuevo documento, escribe algún texto, convertirlo en negrita, insertar una imagen, etc. Si se hace correctamente, el usuario será recibido puntos. Si no es así, deméritos.

Pero (siempre hay un pero) para mí para lograr esto tengo que ser capaz de "ver" lo que el usuario está haciendo. Estoy usando NET (2,0 - C # o VB, no importa cuál). ¿Alguien puede decirle cómo hacer esto? Necesito obtener un identificador para la aplicación Open Office o iniciar uno nuevo y luego tengo que escuchar y evaluar todo lo que el usuario does.If el usuario lo hace mal también necesita enviar instrucciones para la aplicación de Office y que lo haga por él / ella.

¿Es esto posible? ¿Alguien tiene algunas muestras de código sobre la manera de hacer esto o algo similar?

Gracias de antemano

PD: Realmente no querría tener un complemento de Office en lograr esto

Editado: La razón por la que no quiero entrar en VBA es que quería asegurarse de que esto era reutilizable para ayudar a los usuarios en el uso de otras aplicaciones más por el camino. Así que quería de alguna manera para crear un oyente a una aplicación y decodificar la interacción del usuario con la misma.

¿Fue útil?

Solución

En realidad, hay un gancho de Windows diseñado para aplicaciones de entrenamiento computarizado llamado WH_CBT y proporciona una notificación cuando se activan las ventanas, reducen al mínimo, movido, cambiar de tamaño, se ejecutan los comandos, los eventos de ratón / teclado, etc.

No voy a mentir a usted, sin embargo, de enganche es un tema bastante complejo, pero sin duda es accesible desde .NET. Echar un vistazo al siguiente artículo de MSDN que explica cómo utilizar el mensaje de enganche en .NET y a continuación, echar un vistazo a los dos enlaces siguientes para obtener más información acerca de WH_CBT.

Cutting Edge: Los ganchos de Windows en .NET

de MSDN Library: Función SetWindowsHookEx

de MSDN Library: Función CBTProc

Otros consejos

La API de automatización de oficina es una API COM. Se le puede llamar desde el código administrado (.NET), pero eso sólo añade una capa extra y hace las cosas mucho más complejas. He hecho una gran cantidad de trabajo de automatización de oficina utilizando tanto VB / VBA y C # y aunque me encanta C # como lenguaje, tengo que decir que es mucho más difícil de conducir Oficina de esa manera. Mucho . (Es fácil conseguirlo para trabajar en su máquina, al menos una vez - pero no dejes que te engañe).

La API hace que permiten capturar ciertos eventos tales como selecciones de menú, clics de botón barra de comandos, la activación de la ventana, en el documento de apertura / cierre, etc. Puede también atrapan la "selección cambiado" evento que podría utilizar teóricamente para averiguar lo que el usuario está haciendo. Sin embargo, hay una gran cantidad de tareas de manipulación directa de que un usuario puede realizar que usted no sería capaz de atrapar (por ejemplo, arrastrar y soltar, cambiar el tamaño de una imagen, etc.) y para sus propósitos diría que había ser un gran problema.

Yo tendría que decir que dudo mucho que sería capaz de hacer lo que se propone - por lo menos, no lo suficiente como para que sea transparente. Y yo creo que tiene que ser bastante a prueba de bombas dada su base de usuarios.

Lo sentimos. : - (

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top