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





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