Отладка встроенного отсутствующего раздела справки из exe

Насколько я понимаю, когда программа обращается к файлу.hlp, программа помощи Window обрабатывает запрос. У меня есть старый exe-файл, который хочет перейти к определенной теме в файле.hlp через пункт меню. Конечно, справка Windows выдает общую ошибку "не удается найти тему", но мне бы очень хотелось, чтобы в ней также говорилось, какую тему она ожидает найти, поэтому я могу создать.hlp с включенными недостающими темами. Есть ли способ просмотреть более подробный журнал ошибок или просмотреть сам запрос без исходного кода для exe?

окно ошибки

1 ответ

Решение

Короткая история - без исходного кода вашего *.exe (или декомпиляции) и без старых файлов проекта WinHelp, я бы сказал, как первая мысль - без шансов.

Формат WinHelp (.hlp) существует с самого начала 1990-х годов и заменяется HTML Help 1.x (.chm). Microsoft настоятельно советует вам отойти от WinHelp около десяти лет назад. Но для тестового приложения оно работает на моем компьютере с Windows10, как чудо (извините, текст на немецком языке) с некоторыми тяжелыми шагами, чтобы исправить ушедшую программу просмотра WinHelp. Обратите внимание, что я не говорю о средстве просмотра HTMLHelp для файлов справки *.chm, показанных здесь в фоновом режиме.

введите описание изображения здесь

Справка Windows (WinHlp32.exe) - это справочная программа, включенная в версии Microsoft Windows, начиная с операционной системы Microsoft Windows 3.1. Тем не менее, программа справки Windows не имеет значительного обновления для многих выпусков и больше не соответствует стандартам Microsoft. Поэтому, начиная с выпуска Windows Vista и продолжая в Windows 7, программа справки Windows не будет поставляться как функция Windows. Если вы хотите просмотреть 32-битные файлы.hlp, вы должны загрузить и установить программу (WinHlp32.exe) из центра загрузки Microsoft.

Я предполагаю, что вы установили этот пакет и у вас работает 32-битное приложение с файлом WinHelp *.hlp на вашем компьютере с Windows7. Только одна тема из меню кажется вам плохой.

Это может произойти из-за неправильного TopicID, вызванного приложением, или опечатки в TopicId подключенного файла справки. Возможно, программист не назначил тему. Так много причин для вашей ошибки.

Если у вас есть некоторый опыт в создании справки, вы знаете, что скомпилированный файл WinHelp *.hlp включает в себя отображение helpTopicId = topic. Этот файл сопоставления и псевдонима вам понадобится снова при компиляции WinHelp!

Создание нового файла WinHelp *.hlp - трудный путь (для меня тоже после 15 лет не используется). Вы должны декомпилировать и компилировать снова, например, с помощью отредактированной темы. Вас могут предупредить - из-за потери contextId. Смотрите старые материалы с моего сайта по адресу: Преобразование WinHelp (HLP) в HTMLHelp (CHM) - бесплатное руководство

Вам может повезти с декомпилятором для HelpContextId

введите описание изображения здесь

Обычно только один App.HelpFile *.hlp связан с приложением. Для отображения определенной темы в стандартном окне вызов из Visual Basic 6 выглядит следующим образом: WinHelp(hWnd, App.HelpFile, HELP_CONTEXT, ByVal CLng(TopicID)). Так что только обновление кода даст вам шанс для нового TopicId. Это должно соответствовать (новому) файлу справки.

Другие вопросы по тегам