Листинг 1
Uses ComObj, ActiveX
...
procedure TForm1.Button1Click(Sender: TObject);
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
begin
//Указать программный идентификатор приложения-сервера
AppProgID:=’Word.Application’;
ServerIsRunning := False;
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
//Создать один экземпляр сервера
pp := CreateOleObject(AppProgID)
else
begin
//Соединиться с уже запущенной копией сервера
App := GetActiveOleObject(AppProgID);
ServerIsRunning := True;
end;
//показать окно приложения на экране
App.Visible := True;
//—————————————————————————————
//
// Здесь выполняются другие действия с объектами приложения Office
//
//———————-—————————————————————
if not ServerIsRunning then App.Quit;
App:=Unassigned;
end;