如何获取PyWin32进程的PID

时间:2014-04-01 12:18:57

标签: python vsto subprocess pid pywin32

我正在使用PyWin32扩展通过我的Python代码进行一些Microsoft Office计算。

这就是我启动Word的方式:

import win32com.client

wordApp = win32com.client.Dispatch("Word.Application")
# calculations...
# Now, how do I get its PID?

我想弄清楚的是如何获取wordApp进程ID(PID),因为我在这里没有使用subprocess模块,我不能只输入{ {1}}。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我正在做类似的事情,但是调度excel对象。为了获取流程ID,请执行以下操作:

self.application = win32com.client.DispatchEx('Excel.Application')
t, p = win32process.GetWindowThreadProcessId(self.application.Hwnd)

从这些变量中,p是进程ID(任务管理器中显示的ID)。

希望这会有所帮助,尽管已经过去了。

答案 1 :(得分:0)

我认为myProcess是对调度的Word对象的引用,无法获取进程信息。

您可能必须连接到WMI以获取流程详细信息,如:

objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")

我希望我理解这个问题,这有帮助。