Откройте CHM (файл справки) в C # - PullRequest
9 голосов
/ 23 мая 2011

Я пытаюсь открыть файл справки (расширение chm) в C #.

File.Open(@"//help.chm",FileMode.Open, FileAccess.Read, FileShare.Read);

и

FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);

не работает: (

Ответы [ 7 ]

25 голосов
/ 23 мая 2011

Вы можете использовать -

System.Windows.Forms.Help.ShowHelp(Control, String)

Итак, если вы находитесь в форме / контроле

Help.ShowHelp(this, "file://c:\\helpfiles\\help.chm");

ShowHelp метод также обеспечивает перегрузки для перехода к определенной теме и странице справки, расположенной внутри скомпилированного файла справки HTML.

Чтение System.Windows.Forms.Help.ShowHelp в MSDN

Декомпиляция файла CHM

Это так же просто, как выполнить приведенную ниже команду в командной строке.

hh.exe -decompile <target-folder-for-decompiled-content> <source-chm-file>

Например:

hh.exe -decompile C:\foo\helpchmextracted help.chm

После выполнения вышеуказанной команды вы должны найти декомпилированный контент в папке C:\foo\helpchmextracted.

3 голосов
/ 10 июня 2015
        string helpFileName = @"c:\help.chm";
        if (System.IO.File.Exists(helpFileName))
        {
            Help.ShowHelp(this, helpFileName );                
        }

если это не работает, попробуйте

        if (System.IO.File.Exists(helpFileName))
        {
            System.Diagnostics.Process.Start(helpFileName);              
        }
2 голосов
/ 23 мая 2011

Добавление моих комментариев к ответу согласно запросу:

Кажется, что имя файла в первом утверждении неверно, но во втором должно работать, если файл не заблокирован, не существует или у вас нет прав доступа к файлу. Если вы хотите использовать ShellExecute для файла, вам следует использовать класс System.Diagnostics.Process, но если вы хотите извлечь содержимое CHM, так как он скомпилирован и отформатирован, его нельзя прочитать как обычные текстовые файлы. Взгляните на эти ссылки:

Декомпиляция файлов CHM (справки) с помощью C #

Извлечение файла справки CHM

1 голос
/ 20 октября 2016

System.Diagnostics.Process.Start(@"c:\help.chm");

1 голос
/ 12 июня 2016
 Help.ShowHelp(this, AppDomain.CurrentDomain.BaseDirectory+"\\test.chm", HelpNavigator.Topic, "Welcome.htm");

Приветствие является идентификатором возраста приветствия в файле chm

1 голос
/ 23 мая 2011

Ну, вторая строка должна быть в порядке, если файл не существует, он должен выдать исключение.Нужно быть более конкретным о том, что вы подразумеваете под "это не работает"

0 голосов
/ 28 апреля 2015

Просто сделай это

Help.ShowHelp (ParentForm, "chmFile.chm", "link.htm");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...