Check for hung Office process when using Office Automation使用Office Automation时是否可以检查Microsoft Office进程(即Word,Excel)是否已挂起? 此外,如果进程已挂起,是否可以终止它? 让我开始说,我不建议您在服务器上的服务中执行此操作,但我会尽力回答这些问题。 作为一项服务运行很难清理。例如,使用您作为服务运行的服务而生存下来,可以消除一句悬念或擅长的单词。您可能必须终止服务。如果word或excel处于这种状态,您的服务会停止吗? 尝试测试它是否被挂起的一个问题是,您的测试可能导致一个新的word实例启动并工作,而服务正在运行的那个实例仍然被挂起。 确定其是否挂起的最佳方法是要求它执行应做的事情并检查结果。我需要更多地了解它的实际作用。 以下是在批处理文件中用于清除的一些命令(均应在路径中):
我记得几年前就这样做过-所以我说的是Office XP或2003,而不是2007。 显然,如今自动化的更好解决方案是使用System.IO.Packaging命名空间使用描述docx等的新XML格式。 那时,我曾经注意到,每当MSWord踢出水桶并且吃饱了,机器上就会运行一个名为" Dr. Watson"的进程。这是我的第一个线索,是Word绊倒了。有时我可能会看到多个WINWORD.EXE,但是我的代码只是用来扫描好的Doctor。一旦看到(在代码中),我就杀死了所有WINWORD.EXE进程,他本人是好的Doctor,然后重新启动了折磨Word的过程:-) 希望能给您一些有关寻找什么的线索。 祝一切顺利, 罗布·G 附:如果您做得不对,我什至可以挖掘出档案中的代码! 我可以回答后半部分。如果您在代码中引用了该应用程序对象,则可以在其上简单地调用" Quit":
为了检查挂起的进程,我猜您想尝试从应用程序中获取一些数据,看看是否在合理的时间范围内得到了结果(检查计时器或其他线程或其他东西)。不过,也许有更好的方法。 |