我要截获word文档关闭的消息,但是word又和记事本不一样(打开word多个文档就好像用了一个程序的几个模版一样,而打开多个记事本就象是打开不同的程序,所以关闭一个word文档可以不用关闭word程序).截获每一份word文档后,我想得到这分文档在系统的详细路径.请问应该如何实现?是不是一定要用钩子做啊?能不能就用server里面的控件?谢谢
解决方案 »
- adoquery用多个条件进行查询的问题
- ehlib过滤问题!
- 我想做个发邮件程序,调用outLook发送,绝对有挑战性,欢迎各位发表高见!
- 关于控制多线程的问题
- 谁有做过在Delphi中压缩整个目录成一个文件,救急!给100分!
- 三个问题,TWebbrowser的两个,内存使用的一个,急求解!(最后的分了,大家海涵)
- 大家帮帮我啊,不要因为分少啊,我是刚注册的呀。
- 如何做升级向导程序!
- 控件名字存在string型变量中,我如何对控件操作?看我的代码,没有实现,达人帮忙啊,我在线等
- 请问代码一行写不下怎么办?在线等待!
- 关于Chart的X轴做标平均分布问题
- 给大家发一个使用DBGrid的全攻略
每个WORD文档都有自己的文件名,如果没有,他就默认为1,2,3的下去~!
你可以从文件是否存在去想啊
你可以用 connect , 而不是create一個新的 word.application, 就能連接到已存在的 work 實例,
然後可遍歷其中打開的文件,
如果真的要做到
>>截获Word的关闭
可能要做一個 word 的 plugin
procedure TForm1.TimerTimer(Sender: TObject);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret:bool;
s:string;begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
while Ret do
begin
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='WINWORD.EXE' then
begin
try
WordApplication1.Disconnect;
WordApplication1.Connect;
WordApplication1.OnDocumentBeforeClose := WordOnSave;
exit;
except
end;
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
当然从理论上是不会出现两个word进程的,但是在有个系统中运行确实出现两个进程啊