在我的场景中,我以夸张的方式打开 Word 文档。如果程序打开同一个文档,它应该提示用户该文档已经打开。
Process[] pro = Process.GetProcessesByName("WINWORD");
if (pro.Length > 0)
{
foreach (Process p in pro)
{
p.kill();
}
}
我正在使用上面的代码来查找进程并杀死已经打开的文档。问题是它正在杀死 word.exe,以便所有其他打开的文档也关闭。
如何找到文档的名称并仅关闭该特定文档?
我使用 p.MainWindowTitle
获取打开的文档的名称,但它没有显示所有打开的文档,而是显示第一个打开的文档名称。
什么是正确的解决方案?
最佳答案
您可以使用File.Open
方法以非共享模式FileShare.None
打开文件。
FileStream stream = null;
bool isOpen = false;
try
{
stream = File.Open(@"DFilePath&Name",FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch(IOException)
{
isOpen = true;
//Show your prompt here.
}
finally
{
if (stream != null)
stream.Close();
}
if(!isOpen)
Process.Start(@"FilePath&Name");
如果文件已经打开,它会抛出一个 IOException
,您可以捕获并显示您的提示。
顺便说一句,如果您要做的只是显示提示,为什么要首先杀死所有进程?
关于c# - 如何避免打开已经打开的word文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700973/