如何检查*.chm文件中是否存在特定主题?

4

我是这样运行帮助文件的:

Help.ShowHelp(null, @"help.chm", topicKeyword);

topicKeyword是一个主题的通用名称,在某些情况下,这个主题可能不存在于help.chm文件中。因此,我首先想要检查这个主题是否存在,否则用户将会得到带有错误页面/主题的chm文件。


1
本地API(HtmlHelp())比较原始。也许可以尝试使用HH_KEYWORD_LOOKUP命令。但是这并没有太大帮助,用户仍然无法查看到有用的内容。 - Hans Passant
1个回答

0
你可以使用jedwing CHMLib来枚举CHM文件中的主题。例如:
static int CallBack( struct chmFile *h, struct chmUnitInfo *pUI, void *context )
{
    printf( "%s\n", pUI->path );

    return CHM_ENUMERATOR_CONTINUE;
}

int main()
{
    chmFile *pFile = chm_open( "<Path to your CHM file>" );
    if ( pFile )
    {
        chm_enumerate( pFile, CHM_ENUMERATE_NORMAL, CallBack, 0 );

        chm_close( pFile );
    }

    return 0;
}

一旦你列举出了主题,你可以将候选的URL与你的列举进行比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接