Из моего приложения я разрешаю пользователю открывать файл справки.Проверьте, запущен ли процесс с Process.Start?
Файл справки - это только файл * .chm, который открывается с помощью справки по умолчанию.
я открываю его с помощью следующей команды
Process.Start(stringPathToTheFile);
Вопрос заключается в том, что пользователь может щелкнуть два раза или больше в меню справки, и файл откроется, как много раз, как они щелкают.
Моя первая проблема заключается в том, что я должен убедиться, что пользователь не может открыть файл справки более чем один раз:
Я осведомлен о process.HasExcited
собственности, но я не могу использовать это, потому что, если я открываю программное обеспечение , нажмите на справку, закройте мое программное обеспечение, откройте его еще раз и нажмите на ссылку, в которой я заканчиваю открытие двух файлов справки.
EDIT Похоже, что это не очень понятно, так что вот небольшой пример того, что я имею в виду.
Создание консольного приложения с этим:
, если я использую 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
) можно использовать для чтения другого файла.
Мое второе желание сосредоточиться на существующем процессе, если я уже открыл этот файл.
Спасибо за вашу помощь
The HTMLHelp() api очень примитивен, мало что вы можете с ним сделать и ничего не решить вашу проблему. По крайней мере, одна причина, по которой почти каждый из них отображает помощь в браузере в эти дни. –
Я не уверен, как это уместно. У меня в настоящее время эта проблема с файлом справки, но это может быть одна и та же проблема с любым другим видом файла (и я не использую HtmlHelp api) – J4N
Ну, если бы вы тогда решили бы хотя бы одну проблему : окно справки автоматически закрывается при выходе из основного приложения. Help.ShowHelp() в .NET –