Запускать внешние программы бывает нужно не часто. Но вот есть такое техническое решение. Я знаком с несколькими программами имеющими понятие горячей связи. То есть вы можете к своим объектам привязать данные из других программ. Например, такой подход есть в ГИС системе 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 путь не найден