我有一个windows应用程序运行一些昂贵的设备;这个应用程序以各种创造性的方式消亡。通常情况下,这个过程会完全结束。我写了一个小的监控程序,它可以在当前运行的事物列表中查找进程的名称,这对那些失败非常有用。但有时它会变得完全没有反应,需要通过任务管理器终止,但在某种意义上仍在“运行”。
我完全不熟悉windows api,所以这可能是一个很大的扩展,但是我可以做些什么以编程方式检查其他进程的“活性”吗?或者我可以用它来猜测?(监视它停止处理操作系统中的事件,或所有磁盘访问/内存分配停止等)
最好是我可以通过python win32模块来完成的,但是我将扩展到任何能够成功检测到这个东西何时锁定的地方。而且,我意识到“活力”是模糊的,但我不想排除任何可能性,特别是当我对这件事是如何真正失败没有任何洞察力的时候。

最佳答案

我认为最好的方法是在win32 api中使用Process & Thread functions。NB:你可以很容易地在Python中嵌入C++代码。这可能需要一些时间和耐心,我自己也不知道这些功能的大部分。
另一方面,codeproject上的Process Monitoring和python中的wmi包装器Python WMI上有一个详细的项目,但是记住wmi速度相当慢,必须确保服务在pc上运行。
也有可能您能够send a message to the process这将导致进程提供一个回复或更改它的状态(如果它是活动的),然后在进程中检查此更改一段时间。

07-24 09:51
查看更多