Ошибка 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. Мы не
регистрируем это автоматически в таблице, поэтому, чтобы воспользоваться его
функциональным назначением, вы должны получить этот интерфейс и использовать его
методы для регистрации.
|
|
  |
|
Служба доставки экспресс-почты: почта экспресс. Что лучше экспресс или система? . Задавай вопросы и получай ответы. Технология ATI CrossFire: асимметричный ответ на NVIDIA SLI. . Бытовая техника для дома и дачи: ремонт кофемашин. Кофеварка кофеварке рознь. . автозапчасти honda . |