2010-02-16 9 views
7

Sto cercando di ottenere un file CHM per aprire un argomento specifico utilizzando C#.Elenca tutti gli argomenti da un file CHM

Ho provato con

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

ma non a trovare la pagina. Non devo digitare correttamente il titolo dell'argomento. C'è un modo per recuperare in modo programmatico tutti gli argomenti da un file CHM in modo che possa vedere quali sono?

risposta

7

No, la funzione API HtmlHelp è troppo primitiva per supportare gli argomenti di enumerazione. È possibile utilizzare il gestore di file 7-zip per cercare all'interno del file .chm. Fai clic con il pulsante destro del mouse sul file e seleziona "Apri all'interno". Oppure utilizzare lo strumento di creazione della guida che è stato utilizzato.

4

Se si apre un file CHM e si fa clic con il tasto destro su una pagina di guida, è possibile scegliere il comando Proprietà.
Nel mezzo della pagina Proprietà c'è una proprietà chiamata: Indirizzo (URL).
La fine dell'URL contiene la stringa argomento utilizzata per aprire il file della guida nella pagina corretta.

Ecco un esempio: mk: @MSITStore: C: \ Program% 20Files \ Sisulizer% 202010 \ Sisulizer.chm ::/OutputFiles.htm

Se l'URL è troppo lungo per vedere l'argomento in Alla fine, puoi selezionare l'indirizzo con il mouse e scorrere fino alla fine.

Ecco una schermata.

enter image description here

+0

Meraviglioso, a fare quello che dice dà una stringa di ancoraggio diverso da quello nel file HTML. Cambia la posizione di scorrimento del file della guida E il contenuto evidenziato nell'elenco sulla sinistra (usando il nome dell'ancora "ovvio" cambia solo la prima). Grazie! –

0

Non sono sicuro su come recuperare a livello di codice argomenti da CHM. Ma ho cambiato il codice a una riga in questo modo e ha funzionato.

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

È inoltre possibile utilizzare il seguente, dove è path percorso del file chm:

using System.Windows.Forms; 

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