Запускать внешние программы бывает нужно не часто. Но вот есть такое техническое решение. Я знаком с несколькими программами имеющими понятие горячей связи. То есть вы можете к своим объектам привязать данные из других программ. Например, такой подход есть в ГИС системе ArcView Вы заполняете поле в базе данных именем файла и пишите скрипт на языке AVENUE, в котором вызываете программу и передаете в параметры имя файла для открытия. Идея хороша тем, что позволяет внутри одной программы связать много разных данных.
Реализуется данная возможность на основе функции Windows с названием WinExec. Вот её описание.
UINT WinExec(
LPCSTR lpCmdLine,// строка с именем программы
UINT uCmdShow// вид вывода на экран в смысле
//скрытая или нормальная и так далее
);
А вот и код с примером, который запускает обычный калькулятор:
// ExecTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{
cout << WinExec("c:\\windows\\calc.exe",SW_SHOW) << endl;
}
Да эта функция реализованна только для совместимости с Win 16 приложениями, а приложения Win 32 должны реализовывать данную возможность через CreateProcess.
Результатом этой функции может быть несколько кодов, но если код возврата больше 31, то функция выполнена успешно. Вот некоторые коды:
ERROR_BAD_FORMATформат exe файла неверен
ERROR_FILE_NOT_FOUNDфайл не найден
ERROR_PATH_NOT_FOUNDпуть не найден