通过Office Automation

时间:2015-05-20 21:08:39

标签: c++ process ms-word ole pid

这有点神秘,所以我希望我很清楚。

我有一个自定义的非托管DLL:MYDLL.DLL,由Word使用声明函数通过VBA脚本调用。

DLL使用CreateToolhelp32Snapshot获取父进程ID。即,调用Winword.exe的过程。

在大多数情况下都能正常工作。例如,

  • 如果我双击DOCX文件,它会将父PID显示为Explorer.exe。

  • 如果我从CMD窗口“启动”文档,它会将父PID显示为CMD.EXE。

  • 如果我使用ShellExecute从我的应用程序MYAPP.EXE启动Winword.exe,它会将父PID显示为MYAPP.EXE。

到目前为止,非常好。

但是,如果MYAPP.EXE通过OLE / Office Automation打开DOCX文件,它会将父PID显示为SVCHOST.EXE。就我所见,MYAPP.EXE在祖先链中无处可去。

通过OLE / Office Automation启动时,有什么办法可以告诉调用PID是什么?

0 个答案:

没有答案