Вызов функции WinExec наиболее простой способ порождения нового процесса. Хотя эта функция реализована только для совместимости с Win16-приложениями, приложения Win32 должны реализовывать данную возможность через CreateProcess. Фактически WinExec является оберткой для CreateProcess - внутри WinExec происходит вызов CreateProcess с параметрами по умолчанию.
UINT WinExec(
LPCSTR lpCmdLine,
UINT uCmdShow
);
Параметр lpCmdLine – ссылка на заканчивающуюся нулевым значением строку, содержащую командную строку для запуска приложения.
Параметр uCmdShow задает способ отображения окна программы (SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL и т.д.).
Результатом функции WinExec является целое число. Если код возврата больше 31, то функция выполнена успешно, иначе в процессе выполнения функции произошла ошибка и возвращенное функцией значение следует сравнить со специальными константами для выяснения причины неудачи.
#include "stdafx.h"
#include "windows.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
switch (WinExec("c:\\windows\\notepad.exe",SW_SHOW))
{
case 0:
cout << "ERROR: The system is out of memory or resources.";
break;
case ERROR_BAD_FORMAT:
cout << "ERROR: The.exe file is invalid.";
break;
case ERROR_PATH_NOT_FOUND:
cout << "ERROR: The specified path was not found.";
break;
case ERROR_FILE_NOT_FOUND:
cout << "ERROR: The specified file was not found.";
break;
}
cin;
}