Mega Code Archive

 
Categories / Delphi / Activex OLE
 

eolesys operation unavailable error

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.