我想开发管理Word文档的C#Windows应用程序。 我想认识到另一个Word应用程序正在以其他方式打开(例如,从Windows“开始”菜单中),我想对此发出警告。
用户可以从此应用程序的主窗口中打开Word文档,就像在单击测试按钮上运行的此硬编码测试一样:
myApp = new Word.Application();
Word.Document mydoc1 = myApp.Documents.Open("C://test/doc1.docx");
Word.Document mydoc2 = myApp.Documents.Open("C://test/doc2.docx");
用户可以将文本或图像从此应用程序主窗口的Treeview拖放到此打开的文档中。
但是,当用户以不同于此应用程序的方式打开新的单词应用程序时(例如,从“开始”菜单或双击WINWORD.EXE等),则使用该应用程序会造成混乱,因为拖放的工作原理仅在此应用程序打开的托管文档上正确显示。
我通过指示用户“不得运行其他Word应用程序”来解决此问题,该应用程序将提供有关这种情况的警告。
我发现,在应用程序启动时进行检查很简单(类似这样):
foreach (Process lP in Process.GetProcesses())
{
if (lP.ProcessName == "WINWORD")
{
MessageBox.Show("Word is running, close please");
return;
}
}
但是我不知道该如何识别当我的应用程序已经运行后又打开另一个Word的情况。我认为此检查将在某个计时器滴答声中定期开始,但是我不知道如何从外部启动的第二个“外来Word应用程序”中识别出我的应用程序启动的“我的Word应用程序”。
答案 0 :(得分:0)
我接受了此解决方案:
在计时器上打勾,此方法将运行:
{
int s;
Process[] mps = Process.GetProcessesByName(aName);
s= mps.Length;
mps.ToList().ForEach(p => p.Dispose());
return s;
}
我认为这是简单的解决方案。
我认为这不是一个很好的解决方案:)。 (...对不起,吉米,但感谢您对内存的警告,根据Google的说法,您是对的)。
有人看到任何隐藏的问题吗?