Как сказать VB6, где найти winhlp32.exe

Я поддерживаю большое приложение VB6, которое я хотел бы установить на Windows 10. Оно имеет большой файл справки в формате WinHelp. Я хотел бы распространять winhlp32.exe (и winhlp32.exe.mui) вместе с приложением, а не заменять файл winhlp32.exe в папке Windows 10 Windows. Если я помещаю (старый) файл winhlp32.exe в папку приложения в Windows 10, а файл winhlp32.exe.mui - в подпапку с именем en-US, файл справки работает, если я ввожу команду "winhlp32.exe myhelpfile.hlp"в папке приложения. Однако, если я запускаю exe приложения (созданного VB6) и нажимаю F1, он запускает заглушку winhlp32.exe для Windows 10, а не winhlp32.exe в папке приложения.

Кто-нибудь может подсказать, как убедить приложение VB6 (до или после его компиляции) использовать winhlp32.exe из папки приложения вместо папки Windows?

2 ответа

Короткая история - вас могут предупредить, и вы знаете, что в целом это трудная задача для переноса вашего приложения VB6, возможно, без простого перехода WinHelp на HTMLHelp.

Официальная рекомендация (10 лет):

Забудьте о WinHelp, его истории и перейдите к формату файла справки CHM.

Но, может быть, вы уже нашли мой ответ (поиск Run WinHelp на Windows10) и прочитайте все дальнейшие ссылки:

Обратите внимание на инструмент под названием HHPMod, специально предназначенный для переноса контекстно-зависимой справки F1.

Я попробовал WinHelp старой программы VB6 до и после исправления сверху, и он работает для меня в Windows 10 (версия 1803).

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

Другое решение, которое вы можете попробовать (зависит от вашего развертывания и ИТ-среды):

Цитируется из этой статьи (спасибо Komeil Bahmanpour):

"Обратите внимание, что пользователи, которые пытались заменить winhlp32.exe вручную в папке Windows и winhlp32.exe.mui в папке Windows\en-US Windows 7, столкнулись с ограничениями на перезапись из-за проблем с владением и разрешениями".

Дополнительная информация:

Я вполне могу ошибаться, но я считаю, что (старые) файлы интерактивной справки, как правило, защищены авторским правом как часть Microsoft Windows. Распространение файлов, как правило, представляет собой нарушение закона об авторском праве (как вы упоминали в своем вопросе).

Разработчики AFAIK не имеют права распространять версию WinHlp32.exe для Vista или включать ее в свои установки. Каждый отдельный пользователь, который хочет использовать WinHelp, должен загрузить обновление WinHelp непосредственно от Microsoft и установить его самостоятельно.

Помощь для приложений была.chm уже много лет. Microsoft выпустила инструмент HH Workshop (HTMLHelp SDK 1.4) примерно в 1997 году. Примерно в марте 2006 года во время обсуждений с MVP группа поддержки Microsoft объявила, что WinHelp устарела (прекращена). WinHelp спроектирован таким образом, что Microsoft придется переписать его с нуля, чтобы соответствовать стандартам кода Windows Vista. С тех пор.CHM был единственным выбором для нашей помощи приложения.

Что это значит (обратите внимание, что через десять лет мы сейчас!):

  • Среда выполнения WinHelp (WinHelp32.exe) больше не поставляется с Windows Vista/7/8/10
  • Независимые поставщики программного обеспечения должны прекратить продвигать WinHelp как жизнеспособную справочную систему.
  • Авторы справки должны перейти к HTML Help 1.x (.chm), если они этого еще не сделали.

HH Workshop достаточно для создания файлов справки.CHM. Я использую инструмент с несколькими дополнительными функциями (перетаскивание TOC/ редактирование индекса и т. Д.), Который называется "FAR HTML". Кроме того, существуют высококлассные, более дорогие инструменты (вы упомянули RoboHelp), которые имеют расширенные функции, такие как "преобразование между различными справочными системами".

Попробуйте (не проверено, но вы должны понять)

 Shell App.Path & "\winhlp32.exe myhelpfile"

App.Path получает текущий путь к исполняемому файлу, поэтому просто убедитесь, что ваш файл winhlp32.exe находится рядом с ним.

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