Конференция "Corba" » OleContainer и несколько процессов ms word [Delphi, Windows]
 
  • rith2 © (03.08.09 04:19) [0]
    Привет

    Ситуация - создал ocx компонент для стороннего приложения. Задача компонента загрузить в OleContainer выбранный документ ms word... . Компонент регистрируется в системе.

    Вызываю его из стороннего приложения - стартует процесс WinWord и открывается документ, все работает.

    Запускаю второй раз, чтобы получить еще один документ в стороннем приложении - запускается ЕЩЕ ОДИН процесс WinWord, открывается документ - все работает, но у первого открытого документа панель инструментов становится недоступной, будто бы фокус на ней получить не удается. А у второго все в порядке. Документы прицеплены к разны процессам...
    Дело даже не в том, что все это сохраняется как ocx - в MDI приложении тоже самое - на дочерних окнах создаю OleContainer и загружаю в него Ворд - вса аналогично, блокируется панель инструментов у ранее открытых доков. Хотя текст добавлять в документ по прежнему можно.

    Код
    (создается документ, сохраняется на диске а потом грузится в Контейнер через CreateObjectFromFile, к имени создаваемого документа для уникальности добавляется случайная последовательность цифр)
    TApp:= TWordApplication.Create(Application);
     TApp.AutoConnect:= True;
     TApp.ConnectKind:= ckNewInstance;
     Template:= 'normal'; Param:= False;
     TApp.Documents.AddOld(Template, Param);

     TDoc:= TWordDocument.Create(Application);
     TDoc.ConnectTo(TApp.ActiveDocument);
     FileNameNum:= Random(10000);
     FileName:= 'file'+IntToStr(FileNameNum)+'.doc';
     TDoc.SaveAs(FileName);
     FileNamepath:= TDoc.Path+'\'+FileName;

     OleCont:= MyToleContainerClassShowView.Create(Application);
     OleCont.Parent:= Panel1;
     OleCont.Align:= alClient;
     OleCont.CreateObjectFromFile(FileNamePath, False);



    Delphi 7.0
 
Конференция "Corba" » OleContainer и несколько процессов ms word [Delphi, Windows]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]