Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: август 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Ошибка EOLESYS..OPERATION UNAVAILABLE (операция недоступна) при использовании GETACTIVEOLEOBJECT

- Надо снять порчу с компьютера, - сказала цыганка, запустив DrWeb.

Это происходит при использовании сервера автоматизации Delphi, или когда сервер автоматизации (например, word.basic) не запущен.


 procedure TForm1.Button1Click(Sender: TObject);
 var
   V: OleVariant;
 begin
   V := GetActiveOleObject('Word.Basic');
   V.FileNew;
   V.Insert('тест');
 end;
 

GetActiveOleObject определен в ComObj.pas. Он преобразует имя класса в guid и передает его при вызове Windows api функции GetActiveObject.


 function GetActiveOleObject(const ClassName: string): IDispatch;
 var
   ClassID: TCLSID;
   Unknown: IUnknown;
 begin
   ClassID := ProgIDToClassID(ClassName);
   OleCheck(GetActiveObject(ClassID, nil, Unknown));
   OleCheck(Unknown.QueryInterface(IDispatch, Result));
 end;
 

GetActiveOleObject использует интерфейс с именем IRunningObjectTable. Мы не регистрируем это автоматически в таблице, поэтому, чтобы воспользоваться его функциональным назначением, вы должны получить этот интерфейс и использовать его методы для регистрации.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS