提个比较难的问题:关于WORD中存盘的消息。 (200分)

  • 主题发起人 主题发起人 荷塘新月
  • 开始时间 开始时间
http://www.pconline.com.cn/pcedu/empolder/gj/delphi/0401/293407_4.html
 
诸位所说的都不能解决问题。自己顶!
 
这个问题也不难解决。

用WORD的插件技术,就应该可以实现

得到SAVE按钮和菜单的句柄,然后用自己定义的函数替换掉它的原来的函数,在自己的函数中可以在作完自己的操作后(也可以加入事件),再调用COM中的保存函数;

具体的操作建议参考HUBDOG的《delphi深度探索》中关于WORD插件的例子。
网上应该可以找到,找不到我可以发一份给你。
 
DELPHI 6 的DEMO中有一个控制WORD的例子(在 delphi6/demos/activex/oleaotu/word8),我对这个例子做了一些修改,即增加了一个 ONSAVEDOCUMENT的事件,用来截获WORD中保存文件的消息。WORD中保存文件时,发送一个消息,这个消息的值为8。主要是修改这一段语句:
function TWordEventSink.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT;
begin
case DispID of
2 : if Assigned(FOnQuit) then
FOnQuit(FOwner);
3 : begin
if Assigned(FOnDocumentChange) then
FOnDocumentChange(FOwner);
InterfaceDisconnect(FDocDispatch,FDocDispIntfIID,FDocConnection);
try
FDocDispatch := _Application(FAppDispatch).ActiveDocument;
InterfaceConnect(FDocDispatch,FDocDispIntfIID,Self,FDocConnection);
except;
end;
end;
4 : if Assigned(FOnNewDocument) then
FOnNewDocument(FOwner);
5 : if Assigned(FOnOpenDocument) then
FOnOpenDocument(FOwner);
6 : if Assigned(FOnCloseDocument) then
FOnCloseDocument(FOwner);
8 : if Assigned(FOnSaveDocument) then //这个是我自己增加的
FOnSaveDocument(FOwner);
end;
Result := S_OK;
end;

呵呵,进了一步,高兴啊!
 
哦,谢谢你的答案了,我们也学了一招
 
收藏。。
 
开始没有达到我的设想。[:(]需要继续研究WORD/WINDOWS消息,希望在这方面了解的比较多的大侠多多帮助!
 
不好解决啊?
看来需要写钩子了!
 
最近在看 ole/automation栏的帖子,还没有发现能够解决这种问题的。[:(]
 
老大工作找到了吗?
疑问,j2se编写的应用程序竞争力到底在那里呢?
j2ee要是作出拿的出手的web服务,起码要html+jsp+java+(网页制作)+(美术功底)+Weblogic7+mysql,真是让人吐血了
 
还没有找到。再沉沉!
 
看来这个问题较难,需要潜心研究才能解决。
 
关注中~~~~
我也顶顶。。。。
 
不好解决。期待......
 
VBA不能解决我提的这个问题吧!
 
荷塘新月帮我解决一下这个问题,多谢!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2601441
我的E_MAIL
SUNHONGWEISUN@YAHOO.COM.CN
 
踢哪好呢? 屁股吗?[^][^]
 
欢迎大家踢啊!踢哪都行,只要不踢屁股![:D]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部