Главная страница | назад





Article #17226: 'EOleSys..operation unavailable' error

 Question and Answer Database
FAQ2226D.txt 'EOleSys..operation unavailable' error
Category :ActiveX/OLE/COM/ActiveForm
Platform :All
Product :Delphi 3.x
Question:
EOleSys..operation unavailable" error using GetActiveOleObject.
What is the cause and how do I resolve this error?
Answer:
This occurs when using a Delphi automation server, or when the
automation server (such as word.basic) is not running.
procedure TForm1.Button1Click(Sender: TObject);
var
V: OleVariant;
begin
V := GetActiveOleObject('Word.Basic');
V.FileNew;
V.Insert('test');
end;
GetActiveOleObject is defined in ComObj.pas. It converts the
classname to a guid, and passes the guid to the Windows api
call 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;
The GetActiveOleObject uses an interface called
IRunningObjectTable. We're not automatically registering
to this table, so to have this functionality you must get
this interface and use it's methods to register.
7/16/98 4:31:28 PM

Last Modified: 01-SEP-99