这有点神秘,所以我希望我很清楚。
我有一个自定义的非托管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是什么?