Liste todos os tópicos de um arquivo CHM
Pergunta
Estou tentando obter um arquivo CHM para abrir para um tópico específico usando C#.
Eu tentei usar
Help.ShowHelp(this, path, HelpNavigator.Topic, "TopicTitle");
Mas não encontra a página. Não devo estar digitando o título de tópico corretamente. Existe uma maneira de recuperar programaticamente todos os tópicos de um arquivo CHM para que eu possa ver o que eles são?
Solução
Não, a função API HTMLHELP é muito primitiva para apoiar tópicos de enumeração. Você pode usar o gerenciador de arquivos 7-ZIP para procurar dentro do arquivo .chm. Clique com o botão direito do mouse no arquivo e escolha "Abrir dentro". Ou use a ferramenta de criação de ajuda que foi usada.
Outras dicas
Se você abrir um arquivo CHM e clicar com o botão direito do mouse em uma página de ajuda, poderá escolher o comando Properties.
No meio da página de propriedades, há uma propriedade chamada: endereço (URL).
O final do URL contém a sequência de tópicos usada para abrir o arquivo de ajuda na página correta.
Aqui está um exemplo: MK: @msitstore: C: Program%20Files sisulizer%202010 sisulizer.chm ::/outputfiles.htm
Se o URL for muito longo para ver o tópico no final, você poderá selecionar o endereço com o mouse e rolar até o final.
Aqui está uma captura de tela.
Você também pode usar o seguinte, onde path
é caminho para o arquivo CHM:
using System.Windows.Forms;
Help.ShowHelp(this, path, HelpNavigator.KeywordIndex, "Topic title");
Não tenho certeza de como recuperar programaticamente tópicos do CHM. Mas mudei o código de uma linha dessa maneira e funcionou.
Help.ShowHelp(this, path , HelpNavigator.TopicId,"TopicTitle");