| |
| 'EOleSys..operation unavailable' error |
 |
EOleSys..operation unavailable" error using GetActiveOleObject. What is the cause and how do I resolve this error?
This occurs when using a Delphi automation server, or when the automation server (such as word.basic) is not running.
procedure TForm .Button Click(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.
|
|
| Hits/month |
2,500,000+ |
Downloads (Since May 2000) |
7,393,709 |
| Total Files |
6,023 |
| Forum msgs |
7,670 |
| Articles/FAQs |
70+/900+ |
Top Selling Software at Amazon
|