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

解决方案 »

  1.   

    MyExcel: OleVariant;
       myexcel := GetActiveOleObject('Word Application');//
      

  2.   

    var MWord:variant;
    begin
      try
        MWord:=GetActiveOleObject('Word.Application');
      except
        ...
        ShowMessage('Word don't running!');
        ...
      end;
    end;
      

  3.   

    function ActiveWord:Variant;
    begin
        try
            Result:=Getactiveoleobject('word.application');
        except
          try
            Result:=createoleobject('word.application');
          except
            messagedlg('word may not be installed', mterror, [mbok], 0);
            abort;
          end;
        end;
    end;