Как проверить, существует ли конкретная тема в файле * .chm? - PullRequest
4 голосов
/ 06 декабря 2011

Я запускаю файл справки следующим образом:

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

, но topicKeyword - это общее название темы, и в некоторых случаях эта тема может отсутствовать в файле help.chm. Сначала я хотел бы проверить, существует ли эта тема, в противном случае пользователь получит chm-файл, но с ошибкой page / topic.

1 Ответ

0 голосов
/ 27 марта 2017

Вы можете использовать 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-адрес кандидата в сравнении с вашим перечислением.

...