能否通过接口查询操纵OleContainer中的Word文档?(100分)

  • 主题发起人 主题发起人 almeidar
  • 开始时间 开始时间
A

almeidar

Unregistered / Unconfirmed
GUEST, unregistred user!
如果不使用TWordApplication和TWordDocument,而使用TOleContainer来装载Word对象,
如何向Word对象的指定位置插入指定格式的文本或者其他对象?
我所知道的方法是:
TOleContainer.OleObjectInterface.QueryInterface(...)
里面的参数是IID,哪里有关于Word对象接口的说明?这个函数如何使用?
 
看来你得问微软要资料了。要不你就打开他的类型库看看有什么接口和方法给你调用。
其实何必呢?TWordApplication和TWordDocument 已经封装了大部分接口函数,调用就是了。
 
var
oleWord:olevariant;
......
oleWord:=TOLEcontainer.oleObject
这样得到一个指向olecontainer中的word的引用,在操作word中的各个对象
这样就是取得word的对象的接口了,只不过在运行时解释执行
你不用自己去直接取得word对象的接口的,这两种方式是一样的,俄且word接受到的任何操作请求都是解释执行
效率无法提高的
 
djflying:
oleWord:=TOLEcontainer.oleObject
oleWord虽然获得了OLE对象,但是无法操纵,如:oleWord.Visible:=True;
因为TOleContainer.oleObject返回Variant,如果象CreateOleObject那样返回的是
IDispatch就可以了。
help..............................
 
没有人能回答吗?
简单地说,就是实现向OleContainer中的Word对象指定位置插入一行文字或者其他对象
这样的功能,这下应该清楚了吧?
 
在DELPHI5的源文件中找到WORD2000.PAS,用QueryInterface查询其中的iiD_DOCUMENT,
获得_DOCUMENT接口,那剩下的就什么都可以作了
 
有一个简单的办法:
var WordRepTemp,wordApp:olevariant;
begin
WordRepTemp:=WordOle.OleObject;
WordApp:=WordRepTemp.Application;
WordDoc.ConnectTo(IUnknown(WordRepTemp) as _Document );
WordApp1.ConnectTo(WordDoc.Application);
end;
 

Similar threads

后退
顶部