2010-10-30 10 views
13

Necesito conseguir una macro de automatización como algo dentro de nuestra aplicación de escritorio. La aplicación de escritorio probablemente estará en VB.NET o C# .net. El motivo es permitir al usuario grabar y reproducir ciertas tareas que les gustaría automatizar. Algo así como macros en aplicaciones de oficina y estudio visual. Lo primero que me viene a la mente es VBA.Crear macro soporte de automatización dentro de una aplicación

Es este el enfoque correcto o si hay otras opciones disponibles?
Cualquier trampa o cosas a las que prestarle atención, si algún cuerpo ya lo ha hecho antes.
Algunos enlaces útiles para ponerme en marcha.

Cualquiera que sea poco de ayuda es muy apreciada.

Gracias de antemano.
Samrat.

P.S. Esta es una pregunta bastante genérica que no pertenece a ninguna tecnología específica. Si algunos de ustedes piensan las etiquetas no son apropiadas o si se necesita un poco más etiquetas que he quedado fuera, no dude en editarlos :)

+4

y ahí van mis 50 seres queridos :( –

+1

Aunque defiendo la respuesta del patrón de comando de Philipp, quería preguntar, ¿está reparado usando VBA o .net para el código de macro? Hay muchos otros lenguajes de scripts incrustables. allí .Le viene a la mente LUA (http://www.lua.org/) – Tony

+0

@Tony - No. Dije que VBA es lo primero que me vino a la mente desde que estaba familiarizado con él en los productos de Microsoft. No sabía su practicidad para integrar y otras alternativas que existían. Por supuesto, por ahora mi objetivo principal es la automatización \ macro grabación en lugar de tener un soporte completo de lenguaje de scripting. Voy a echar un vistazo a LUA. Gracias por su tiempo . –

Respuesta

12

¿Está pensando en macros que son sólo para "record-replay" de algunas acciones consecutivas ? Esto podría ser bastante factible si usa el Command pattern en su programación de IU. Entonces, cada acción del usuario es descrita por un objeto (derivado de una clase de Comando abstracta que tiene un método "execute()"). Ahora, grabar y reproducir es simplemente almacenar una lista de objetos de comando, serializarlos y su macro está lista. Para reproducirlo simplemente deserializar los datos y ejecutar la lista de comandos de nuevo.

Espero que ayude!

+0

Creo que esto es básicamente correcto. VBA sería excesivo si no necesita un lenguaje de programación general. Si * necesita * un lenguaje de programación general, solo usar un lenguaje .NET sería mucho menos doloroso que encontrar una forma de usar VBA. – jtolle

+0

Gracias Philipp. Probablemente esperaría unos días más para obtener un par de opiniones más antes de aceptar esto como una respuesta. No obstante, lo haré si algo mejor no aparece. ¡Gracias de nuevo! –

+0

@jtolle @samrat Creo que jtolle tiene razón. La integración de VBA en su aplicación requeriría la licencia de VBA de Microsoft. Solía ​​ser muy caro. Creo que hoy en día ya no lo admiten en aplicaciones de terceros. – MarkJ

1

qué tiene que ser construido en su aplicación? Hay soluciones macro en el nivel de Windows (suponiendo que de tu objetivo OS)

+0

Conozco AHK. Pero necesito que esto esté integrado en la aplicación que debe ejecutarse en Windows. –

4

VSTA (Visual Studio Tools for Applications) es el reemplazo para VBA. No ha tenido éxito tanto como lo hizo VBA con proveedores de terceros o incluso en productos propios de MSFT (el único que actualmente lo tiene es InfoPath). Pero es mucho más moderno que VBA, si eso es una preocupación.

Consulte VSTA main page, y en particular el video: Integrating VSTA to Enable Macro Recording.

+0

¡ahora eso es asombroso! lo atravesaré ... esperaré un poco más para ver lo que piensan los demás también ... parece que valió 50 créditos después de todo :) Gracias Otaku –

+1

+1. No había oído hablar de esto antes. Debe enfatizarse que VSTA no es gratis. Además, personalmente, sería cauteloso con respecto a si Microsoft podría dejar de recibir soporte en el futuro. Conozco a un importante proveedor de software, ESRI, [solía usar] (http://blogs.esri.com/Dev/blogs/arcobjectsdevelopment/archive/2009/03/30/VBA-and-VB6_3A00_-The-Road-Ahead .aspx) VBA pero ahora usa Python como su lenguaje de scripting. Mi suposición (y es solo una suposición) es que ESRI puede haber tomado una decisión estratégica para evitar las soluciones de scripting de Microsoft en el futuro, en parte porque se retiran periódicamente. Esto irrita a los usuarios finales. – MarkJ

+0

.. otro ejemplo es Managed JScript. [Presentado por Microsoft en 2007] (http://blogs.msdn.com/jscript/archive/2007/05/07/introducing-managed-jscript.aspx) como un "lenguaje de primera clase" en el DLR y, ¡ay! completamente caído dentro de dos años. Mala suerte para [cualquiera que lo haya usado] (http://pietschsoft.com/post/2009/06/12/Managed-JScript-on-the-DLR-from-Microsoft-is-DEAD-Why.aspx) – MarkJ

0

Se puede usar Powershell cmdlets.

implementar cada acción realizada por su interfaz gráfica de usuario como cmdlet. Entonces los usuarios pueden usar Powershell para script. Creo que este es el enfoque utilizado por Exchange Server and SQL Server. Por supuesto, ambos están destinados a sysadmin usuarios

0

Como usted mismo está desarrollando la aplicación, debería poder usar la API de Windows directamente para crear (Y controlar) eventos de mouse/teclado.

Eche un vistazo a keybd_event, mouse_event y GetCursorPos. Son bastante fáciles de usar correctamente (los encuentro más sencillos que usando SendInput, pero esa es solo mi opinión).

Cuestiones relacionadas