我有一个通过互操作打开 MSWord 的应用程序
wrdApp = new Word.Application();
wrdApp.Visible = false;
因此,在调试时,如果我直接终止会话,就会留下一堆运行的 WINWORD.EXE*32 实例。
有没有办法让这些实例可见......请记住,创建这些实例的程序已关闭。
是的,正在运行的程序确实会清理它打开的任何实例。
我有一个通过互操作打开 MSWord 的应用程序
wrdApp = new Word.Application();
wrdApp.Visible = false;
因此,在调试时,如果我直接终止会话,就会留下一堆运行的 WINWORD.EXE*32 实例。
有没有办法让这些实例可见......请记住,创建这些实例的程序已关闭。
是的,正在运行的程序确实会清理它打开的任何实例。
试试这个:
Word.Application App = (Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
如果它不起作用,请使用以下命令:
System.Type objAppType = System.Type.GetTypeFromProgID("Word.Application");
object objApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
objAppType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, objApp, null);
我注意到,如果您有一个由 interop 打开的隐藏 Word 实例,并且用户使用正常的 msword 启动图标手动打开 Msword,它会打开并取消隐藏 interop 正在使用的实例。(并且不应该对用户可见!!)
有了这个错误,您可以使用它来打开隐藏/废弃的实例。
在互操作中,您可以拥有多个 msword.exe 实例,但感觉 MS 的帮助太大了,并且暴露了隐藏的实例。
可能我的错误和往常一样,MS 对如何使用隐藏的应用程序有一些聪明的想法,或者你可能错了隐藏的实例。超越 MSWord 的想法和意图。