我用Delphi写了一个调用Word的程序,
起头需要使用GetActiveOleObject判断系统中是否已经启动了Word。
但是当系统中没有启动Word的时候,调用时就会出现“非法调用”的错误!
在Delphi的随机帮助中是这样解释的:
function GetActiveOleObject(const ClassName: string): IDispatch;
这个函数的返回类型是IDispatch,是个接口类型;
那么如何判断是否返回了一个有效的值呢?
起头需要使用GetActiveOleObject判断系统中是否已经启动了Word。
但是当系统中没有启动Word的时候,调用时就会出现“非法调用”的错误!
在Delphi的随机帮助中是这样解释的:
function GetActiveOleObject(const ClassName: string): IDispatch;
这个函数的返回类型是IDispatch,是个接口类型;
那么如何判断是否返回了一个有效的值呢?
解决方案 »
- delphi程序员转ASP。NET有难度吗?
- 三层架构,以下数据控件如何配对使用(数据库用Access)?
- 哪里有Delphi工控控件下载?
- JPG图片写入ACCESS数据,如何在QREPORT报表中利用QRDBImage显示出供打印???
- HELP!怎么写才能得到最大公约数?please!
- 有没有人遇到过这个问题??
- 那里有能显示图片特效的控件呢? for d6
- 如何释放文件资源,进来看看,不是想象中简单,UP给分
- 扩展cxDBLookupComboBox,使其按拼音首字查找、五笔首字查找、原文查找(未完成,刚写了个皮毛,希望大家一起完成)
- 程序和程式有什么区别?
- 如何做 rave 報表?
- 请大家进来讨论一下!
TRY
except
屏蔽错误
不过我的目的不是捕捉异常,因为我的目的是连接Word操作。
如果系统中已经启动了Word,那么用mWordObj:=GetActiveOleObject('Word.Application');就可以直接对Word进行操作了;
如果系统中没有启动,就得用mWordObj:=CreateOleObject('Word.Application');来创建Word对象;
现在问题是,如果系统中没有启动Word的话,用GetActiveOleObject(……)就要出错,
您看怎么解决这个问题?
getactiveoleobject('word.application');
except
createoleobject('word.application');
end;
begin
if Succeeded(GetActiveObject(ProgIDToClassID('Word.Application'), nil, WordApp)) then
begin
// do something
end;
end;