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

Это происходит при использовании сервера автоматизации 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. Мы не регистрируем это автоматически в таблице, поэтому, чтобы воспользоваться его функциональным назначением, вы должны получить этот интерфейс и использовать его методы для регистрации.
Теги:
операция недоступна, Ошибка, EOLESYS..OPERATION UNAVAILABLE
Добавлено: 11 Апреля 2018 07:59:18 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...