怎能捕捉用户关闭了WORD?(30分)

  • 主题发起人 主题发起人 hthugm
  • 开始时间 开始时间
H

hthugm

Unregistered / Unconfirmed
GUEST, unregistred user!
我不用控件而用“OLE自动化”,因为我在控制WORD时修改了WORD的菜单和工具条,我必须
在用户关闭WORD时恢复菜单和工具条(不然再新开一个WORD文档,菜单和工具条不是标准的
),因没用控件故没有Word.onQuit事件(也许有我不知道用,我知道在VB里这样声明是有事件
的,如Dim WithEvent myExcel As Excel.WorkBook,对象的事件会自动出来的,DELPHI如何
声明 ?),请问各路英雄豪杰如何捕捉用户关闭了WORD或者我在什么事件中恢复菜单和
工具条?
 
var MWord:variant;
begin
try
MWord:=GetActiveOleObject('Word.Application');
except
...
ShowMessage('Word don't running!');
...
end;
end;
 
SINGLBOY:
谢谢!
我希望你看清我的提问,我是指WORD对象已建立并且WORD界面已呈现用户面前我怎样捕捉
用户关闭此WORD?
 
I don't know!
 
用findwindow就可以了。
具体你可以看一下帮助文件。
 
txmaster:
用FindWindow找到WORD窗口不存在时我建立的WORD对象已在用户关闭WORD窗口时自动
free,怎能在这时恢复工具条和菜单?(已晚了)
 
to hthugm
不明白你的意思。你在程序中為何要改word茶單?你的意思是否改了以后﹐單獨起動word時茶單等不能恢復嗎?
實在不行的話﹐我建議您想想別的方法﹐這種方法是否有點過分﹐要那么精細地在程序中控制word。
用hook應該能行﹐我也不太懂﹐你可以看以前的貼子。
 
到Binh Ly的站点http://www.techvanguards.com/看看 EventSinkImp,它可以trap OLE Server事件,
包括Word Quit Event。
 
To DragonPC_???:
您好人做到底吗,您提供的站点全是英文,我英文太差请给我讲一条思路好吗?
 
老大,你也太懒了点吧,我给你指了一条明路,你还要俺抬着你走?

Binh Ly是Borland的COM专家,这个工具是免费的,专业用于COM事件的Trap捕捉,
到 http://www.techvanguards.com/products/eventsinkimp/ 下载Download EventSinkImp 2.0先,
安装,会有一个Program叫做EventSinkImp.exe,运行,选择Office目录下面的Word*.olb文件Import
Type Library,会产生一个叫做 WordEvents.pas 的文件,Install Component它,在Delphi的
ActiveX下面会多处几个Component组件,WordEvent之类的,再下载一个Word的例子,编译。运行,看看
OK? [:)]

KAO, 打字真累!!!!


 
好东西!
这得下载来学西学习!!
 
哈哈﹐老大﹐不組點分意思意思嗎?人家可打了很多字喲!!
是否也給俺來點?[:P]
 
各位高手很快我将发分
 
多人接受答案了。
 
另一种办法:如果只是要将word的菜单恢复,你可以用vba写个小程序,
在文本关闭的时候触发。
 
做一个模板temp.dot,在打开doc时候加载它
在这个模板里面指定word的菜单和工具条,只要不更改normall.dot,再开一个新的word
文档,不会加载temp.dot,菜单条还是标准的
给你个example

set wrd=createobject("word.application")
wrd.visible=true
set newadd=wrd.AddIns.Add("c:/temp.dot",true)
wrd.documents.open "c:/test.doc"
 
后退
顶部