пятница, 28 октября 2011 г.

Открытие chm-файла на нужной странице

Для того, чтобы в Windows открыть chm-файл сразу на определённой странице (через ярлык, либо программно - это не имеет значения), нужно сделать следующее:

  • Получить ссылку на страницу, которую нужно открывать.
  • Запустить программу hh.exe (см. примечание), передав ей в качестве параметра ссылку на открываемую страницу.

 Давайте рассмотрим эти действия на конкретном примере - откроем справочную систему AutoCAD 2009 на определённой, нужной нам странице.

Сначала вручную откроем chm-файл на той странице, которая нам нужна. Затем из контекстного меню этой страницы (именно страницы, а не элемента древовидной структуры, представленной на вкладке "Содержание" слева) следует выбрать пункт "Свойства".


В открывшемся диалоговом окне щёлкаем правой кнопкой мыши на значении поля "Адрес:" и из контекстного меню выбираем пункт "Выделить всё".


Повторно щёлкаем правой кнопкой мыши на значении поля "Адрес:", но в этот раз из контекстного меню выбираем пункт "Копировать".


Скопированное нами значение - это параметр, который необходимо передать программе hh.exe для того, чтобы произошло открытие chm-файла на странице, адрес которой был нами скопирован. Т.о. в консоли Windows вызов будет выглядеть так:
hh.exe mk:@MSITStore:C:\AdminCAD\Common\Docs\Help%202009%20Rus\acad172.chm::/1acr.html

Обратите внимание на то, что параметр я указывал без кавычек, хотя при наличии кавычек всё будет так же корректно работать. Дело в том, что все символы пробелов автоматически заменяются последовательностью символов "%20" и потребность в кавычках исчезает. Например, если chm-файл будет находиться в каталоге "C:\Documents and Settings\Developer\Рабочий стол\Help 2009 Rus", то ссылка на нужную мне страницу будет такой: mk:@MSITStore:C:\Documents%20and%20Settings\Developer\Рабочий%20стол\Help%202009%20Rus\acad172.chm::/1acr.html. Как видите - все пробелы заменены на "%20". Т.о. ссылка на конкретную страницу справочной системы строится по правилу:

hh.exe mk:@MSITStore:<Указание полного пути chm-файлу, с заменой всех пробелов на "%20">::<Указание относительного пути расположения html-страницы, входящей в состав chm-файла>

Обратите внимание на то, что путь, указывающий на html-страницу содержит прямые , а не обратные слеши.

Примечание

hh.exe – утилита операционной системы Microsoft Windows, которая вызывается при нажатии клавиши помощи (F1). Процесс не является критическим и его завершение не влияет на стабильность работы системы.

Программно (на C#) открытие chm-файла на нужной странице можно выполнить так:

   1:  static void Main(string[] args) {            
   2:      ProcessStartInfo info = new ProcessStartInfo("hh.exe",
   3:      @"mk:@MSITStore:C:\AdminCAD\Common\Docs\Help%202009%20Rus\acad172.chm::/1acr.html");
   4:      Process proc = new Process();
   5:      proc.StartInfo = info;
   6:      proc.Start();
   7:  }



1 комментарий:

Анонимный комментирует...

Еще как вариант можно использовать метод Help.ShowHelp.
Например, если у страниц в справке есть ключевые слова (keywords), то открыть страницу можно так
System.Windows.Forms.Help.ShowHelp(null, helpFile, keyword + ".html");
где - helpFile - полный путь к файлу
keyword- то самое ключевое слово