Llamar una aplicación externa de Windows

Frecuentemente es necesario interactuar con otras aplicaciones, o explotar sus facilidades, especialmente utilidades de oficina (Word, Excel) . Por ejemplo, hasta donde sea posible, es preferible exportar el contenido de documentos, tales como contratos,etiquetas, cartas, que pueden variar de modo imprevisible de uno a otro, permitiendo que externamente el usuario formatee el texto según su necesidad.
La manera más simple de llamar a una aplicación es por medio de la llamada a la función WinExec, usando el API StartAnExe. El manejo del API es simple, ya que se le pasa sólo un parámetro, que contiene toda la información necesaria para que la aplicación inicie. Es posible que ese string contenga parámetros que pasen como parte de la cadena de caracteres a la aplicación que se inicia. Un detalle que se debe tener en cuenta, al menos tratando de arrancar al Word, es que curiosamente Windows no encuentra la aplicación, a menos que se le pase también la ruta completa (En XP. En W9x eso no sucede).

A continuación, un caso:

En primer lugar, se prepara el mensaje a pasar al API usando la función Format Message. El mensaje entonces concatenará cuatro strings, que informan unidad lógica, ruta, nombre de la aplicación y del documento que ejecutará el Word, en este caso.
Así, CharParameters Located Program = "C://mi_ruta/" +CharParameters program = "word.exe"
+ CharParameters located template = "c://ruta_documento/" + Charparameter template = "mi_doc.doc"

Figura 1

La variable Parameters (VarChar) concatena el programa a continuación de su ruta, con la plantilla del documento y su ruta. La plantilla es un documento con campos variables, y macros que lo autoejecutan. La construcción de la macro que ejecuta el documento, como la lista de campos que se usarán, queda en manos del usuario final. La lista de campos exportada es todo lo que debe negociar la aplicación con el usuario.

Ahora, simplemente hay que llamar al API.

Figura 2

La aplicación se inicia y actúa independientemente. El paso previo debiera ser exportar en formato de texto con separadores, al conjunto de datos que usará la plantilla al autoejecutarse. El funcionamiento de ambas aplicaciones será asincrónico, es decir, la aplicación Plex continúa adelante independientemente de la externa. Pasar mensajes entre aplicaciones, y exportar los datos, serán motivo de otro caso.