2010-02-16 14 views
7

Próbuję uzyskać plik CHM, aby otworzyć do określonego tematu przy użyciu C#.Lista wszystkich tematów z pliku CHM

Próbowałem, używając

Help.ShowHelp(this, path, HelpNavigator.Topic, "TopicTitle"); 

ale nie znaleźliśmy stronę. Nie mogę poprawnie wpisywać tytułu tematu. Czy istnieje sposób, aby programowo odzyskać wszystkie tematy z pliku CHM, aby zobaczyć, czym one są?

Odpowiedz

7

Nie, funkcja API HtmlHelp jest zbyt prymitywna, aby obsługiwać wyliczanie tematów. Możesz użyć menedżera plików 7-zip, aby zajrzeć do pliku .chm. Kliknij plik prawym przyciskiem myszy i wybierz "Otwórz w środku". Lub użyj narzędzia do tworzenia pomocy, które zostało użyte.

4

Po otwarciu pliku CHM i kliknięciu prawym przyciskiem myszy na stronie pomocy można wybrać polecenie Właściwości.
Po środku strony Właściwości znajduje się właściwość o nazwie: Adres (URL).
Koniec adresu URL zawiera ciąg tematu używany do otwierania pliku pomocy na właściwej stronie.

Oto przykład: mk: @MSITStore: C: \ Program% 20Files \ Sisulizer% 202.010 \ Sisulizer.chm ::/OutputFiles.htm

Jeśli adres URL jest zbyt długi, aby zobaczyć temat w na końcu możesz wybrać adres za pomocą myszy i przewinąć do końca.

Oto zrzut ekranu.

enter image description here

+0

Wonderful, robi to, co mówi, daje inny łańcuch kotwicy niż w pliku HTML. Zmienia pozycję przewijania pliku pomocy ORAZ podświetloną zawartość na liście po lewej stronie (za pomocą "oczywistej" nazwy kotwicy zmienia tylko poprzednią). Dzięki! –

0

nie jestem pewien, jak programowo odzyskać tematy z CHM. Ale w ten sposób zmieniłem kod linii i zadziałało.

Help.ShowHelp(this, path , HelpNavigator.TopicId,"TopicTitle"); 
1

Można również użyć następujących, gdzie path jest ścieżka do pliku CHM:

using System.Windows.Forms; 

Help.ShowHelp(this, path, HelpNavigator.KeywordIndex, "Topic title");