从我的应用程序中,我允许用户打开帮助文件。检查Process.Start启动的进程是否仍在运行?
帮助文件只是一个* .chm文件,它是用默认帮助打开的。
我用下面的命令
Process.Start(stringPathToTheFile);
的问题是,用户可以在帮助菜单上点击两次以上,因为他们单击该文件将打开尽可能多的时间打开它。
我的第一个问题是,我必须确保用户无法打开帮助文件不止一次:
我知道了process.HasExcited
财产,但如果我打开我的软件,我不能,因为使用此,点击帮助,关闭我的软件,再次打开它,然后点击帮助我最终打开两个帮助文件。
编辑 看来,这不是很清楚,所以这里是我的意思一小部分。
创建与此控制台应用程序:
如果我使用HasExited(或事件),我有这样的代码:
private static readonly Dictionary<String, Process> _startedProcess = new Dictionary<string, Process>();
private static void Main()
{
String file = @"c:\testFile.txt";
while (true)
{
Console.ReadLine();
OpenProcessIfNeeded(file);
}
}
private static void OpenProcessIfNeeded(String file)
{
if (!_startedProcess.ContainsKey(file) || _startedProcess[file].HasExited)
{
Process process = Process.Start(file);
_startedProcess[file] = process;
}
}
这项工作当你不断控制台应用程序打开,但如果您关闭应用程序并重新打开它,它将不起作用,因为_startedProcess
将不包含该过程。
而我找不到正确的过程Process.GetProcesses()
,因为我没有看到任何属性,让我知道它是哪个过程。
那么,我怎么才能看到一个进程当前正在显示我的文件?我无法搜索进程,因为进程(hh.exe
)可用于读取其他文件。
我的第二个愿望是关注现有的过程,如果我已经打开这个文件。
谢谢您的帮助
的HTML帮助() API是非常原始的,你可以用它做什么,没有什么可以解决你的问题。这些天至少有一个原因,就是大家都在浏览器中显示帮助。 –
我不确定要了解这是如何相关的。我目前有一个帮助文件的问题,但它可能与任何其他类型的文件相同的问题(并且我不使用HtmlHelp API) – J4N
那么,如果你愿意,那么你至少可以解决一个问题:当您的主应用程序退出时,帮助窗口会自动关闭。 .NET中的Help.ShowHelp() –