- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

'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.



* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile