2016-02-11 4 views
1

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

error window

+0

Какую версию операционной системы вы используете? –

+0

О, конечно, WIndows7, 64bit. Но сама программа значительно старше ... около 1998/1999. – Rajada

+0

Я думаю, что вчера добавленный тег «Winhelp» находится в контексте вопроса. –

ответ

1

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

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

enter image description here

Windows Help (WinHlp32.exe) является Помощь программа, которая была включена с версиями Microsoft Windows, начиная с 3,1 операционной системы Microsoft Windows. Однако в справочной системе 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's. Смотрите старые вещи из моего веб-сайта по адресу: Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial

Вы можете получить повезло с декомпилятор для HelpContextId

enter image description here

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

+0

Да, я использую справочную версию, поставляемую Microsoft в качестве дополнительной загрузки. Но, похоже, я не был совершенно ясен. Я уже выкопал приложение с шестнадцатеричным редактором, и я не совсем уверен, что параметры меню даже реализованы. Я надеялся, что кто-то знал, как поймать эту ошибку «тема не найдена» и использовать какой-то трюк, чтобы получить больше информации об этом, поэтому мне не нужно просто грубо заставлять догадываться об идентификаторе темы. Например, возможно, больше информации регистрируется в средстве просмотра событий. Но если на самом деле нет способа получить больше информации, я полагаю, это не поможет. – Rajada

+0

@Rajada: [декомпилятор] (http://stackoverflow.com/questions/414068/is-there-a-visual-basic-6-decompiler) является хорошим вариантом, если это возможно. Вы также можете создать новый файл _hlp_ с 200 тематическими темами, чтобы узнать идентификатор темы и переименовать его для тестирования. ** Тематические идентификаторы ** должны увеличиваться от 1 до 200 на 1, что полезно. –

+0

@Rajada: Забудьте об этом, если они прочитали отрывок из [MSDN] (https://msdn.microsoft.com/en-us/library/aa261329%28v=vs.60%29.aspx?f=255&MSPPError=- 2147217396): _Tip Если у вас есть несколько разделов справки, это может помочь установить схему нумерации, прежде чем вы начнете вводить HelpContextID. Назначьте другой диапазон чисел для каждой формы или основного элемента в вашем приложении, например 1000 - 1999 для первой формы, 2000 - 2999 для второго и т. Д. –