884_____________________________________________Глава 14

приведут к тому, что в метку Labell будет занесено имя приложения, связанного с
файлом типа .doc, например:

С:\MSOFFICE\WINWORD\WINWORD.ЕХЕ

14.14.3.4 WinExec — функция

Запускает указанное приложение

Определение

UINT WinExec(

LPCSTR IpCmdLine, // адрес командной строки

UINT uCmdShow     // режим открытия приложения
);

Описание

Функция WinExec позволяет выполнить указанное приложение. Параметр
IpCmdLine является указателем на строку с нулевым символом в конце, содержа-
щую имя выполняемого файла и, если необходимо, параметры командной строки.

Если имя указано без пути, то Windows ищет выполняемый файл в следующей
последовательности:

1. Каталог, из которого загружено приложение.

2. Текущий каталог.

3. Системный каталог Windows, возвращаемый функцией GetSystemDirectory.

4. Каталог Windows, возвращаемый функцией GetWindowsDirectory.

5. Список каталогов из переменной окружения PATH.

Параметр uCmdShow определяет форму представления окна запускаемого
приложения Windows. Возможные значения этого параметра см. в разделе
14.14.3.2. Для приложений не Windows, для файлов PIF и т.д. состояние окна
определяет само приложение.

При успешном выполнении запуска приложения функция WinExec возвраща-
ет значение, большее 31. Если возвращено меньшее значение, это свидетельствует
об ошибке. Значения ошибок приведены в таблице раздела 14.14.3.1.

Достоинством функции WinExec является ее совместимость с ранними верси-
ями Windows. Собственно для этого она и сохраняется в WIN32, хотя для Win32
рекомендуется пользоваться функцией CreateProcess (об этой функции см. встро-
енную в C+4-Builder справку).

При работе с Win32 функция WinExec завершает работу, если вызванное при-
ложение вызывает функцию GetMessage или заканчивается выделенный лимит
времени. Таким образом, ожидание можно прервать, предусмотрев в процессе, за-
пущенном с помощью WinExec, в нужный момент вызов функции GetMessage.

Примеры

Оператор

WinExec("file.exe",SW_RESTORE) ;

запускает программу file.exe. Оператор

WinExec("nc",SW_RESTORE) ;

запускает Norton Commander. Оператор

WinExec("COMMAND.СОМ",SW_RESTORE);

приводит к запуску MS-DOS.