Листинг 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;