我用Delphi写了一个调用Word的程序,
起头需要使用GetActiveOleObject判断系统中是否已经启动了Word。
但是当系统中没有启动Word的时候,调用时就会出现“非法调用”的错误!
在Delphi的随机帮助中是这样解释的:
function GetActiveOleObject(const ClassName: string): IDispatch;
这个函数的返回类型是IDispatch,是个接口类型;
那么如何判断是否返回了一个有效的值呢?

解决方案 »

  1.   

    可以使用
    TRY
    except
    屏蔽错误
      

  2.   

    谢谢bluemeteor!
    不过我的目的不是捕捉异常,因为我的目的是连接Word操作。
    如果系统中已经启动了Word,那么用mWordObj:=GetActiveOleObject('Word.Application');就可以直接对Word进行操作了;
    如果系统中没有启动,就得用mWordObj:=CreateOleObject('Word.Application');来创建Word对象;
    现在问题是,如果系统中没有启动Word的话,用GetActiveOleObject(……)就要出错,
    您看怎么解决这个问题?
      

  3.   

    try
       getactiveoleobject('word.application');
       except
       createoleobject('word.application');
    end;
      

  4.   

    uses ActiveX, ComObj;var WordApp: IUnknown;
    begin
      if Succeeded(GetActiveObject(ProgIDToClassID('Word.Application'), nil, WordApp)) then
      begin
        // do something
      end;
    end;