Взаимодействие приложения с внешними программами______________379

ния вызываемой программы в памяти будет находиться не ваше большое приложе-
ние POverlay, а только маленькая программа управления OMenage.exe.

Описанное взаимодействие программ имеет некоторый недостаток: при воз-
врате в POverlay текст в окне Editi будет утерян. Этот недостаток легко устранить.
Измените основной файл приложения POverlay следующим образом:

ftinclude <vcl.h>

ftpragma hdrstop

USERES("POverlay.res") ;

USEFORM("UOverlayl.cpp", Formi) ;

ftinclude "UOverlayl.h" // включение головного файла приложения

//———————————————————————-

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR IpCmdLine, int)
f

try
(

Application->Initialize();

Application->CreateForm(_classid(TFormI), &Forml);

Forml->Editl->Text = IpCmdLine;        // Загрузка окна Editi
Application->Run();

}

catch (Exception sexception)
{

Application->ShowException(&exception) ;

}
return 0;

)

По сравнению со стандартным файлом, созданным C++Builder, в него добавле-
но две строки (отмечены комментариями): директива, включающая головной файл
модуля UOverlayl.h, содержащего описание вашей формы Formi, и оператор, за-
гружающий в\жно Editi текст, переданный через командную строку. Еще одно
изменение по сравнению со стандартным файлом — введение в заголовок функции
WinMain параметра IpCmdLine — ссылки на командную строку. Если в файле
приложения POverlay сделаны такие изменения, то в приложении OMenage вто-
рой вызов функции должен быть изменен на следующий:

spawnlp(P_OVERLAY,"POVERLAY.exe","POVERLAY.exe",IpCmdLine,NULL) ;

Этот вызов отличается от того, что был раньше, передачей в программу той
командной строки, которая была задана при вызове OMenage. Таким образом в
программу POverlay вернется имя запускавшейся программы, которое будет за-
гружено в окно Editi.

Функция spawnip принадлежит к целому семейству, включающему 8 подоб-
ных функций. Подробную информацию о них вы найдете в главе 14 в разделе
14.14.2. По своим основным характеристикам все эти функции аналогичны, раз-
личаясь только каталогами, в которых ищется фпйл, передачей в новое приложе-
ние переменных окружения и заданием аргумент./, функции.

6.1.3 Запуск внешней программы функцией WinExec

Функция WinExec, в отличие от описанных в предыдущих разделах, позволя-
ет управлять формой представления окна запускаемого приложения. Эта функция
может работать в любых версиях Windows и выполнять любые файлы: приложе-
ния Windows, MS-DOS, файлы PIF и т.п. Функция WinExec определяется следую-
щим образом:

int WinExec(const char *CmdLine, unsigned int CmdShow);