如何告诉VB6在哪里找到winhlp32.exe

如何告诉VB6在哪里找到winhlp32.exe,vb6,windows-10,chm,winhelp,Vb6,Windows 10,Chm,Winhelp,我维护一个大型VB6应用程序,希望能够安装在Windows 10上。它有一个WinHelp格式的大型帮助文件。我希望将winhlp32.exe(和winhlp32.exe.mui)与应用程序一起分发,而不是替换Windows 10 Windows文件夹中的winhlp32.exe文件。如果我将(旧的)winhlp32.exe文件放在Windows 10的应用程序文件夹中,并将winhlp32.exe.mui文件放在名为en US的子文件夹中,则如果我在应用程序文件夹中输入命令“winhlp32.

我维护一个大型VB6应用程序,希望能够安装在Windows 10上。它有一个WinHelp格式的大型帮助文件。我希望将winhlp32.exe(和winhlp32.exe.mui)与应用程序一起分发,而不是替换Windows 10 Windows文件夹中的winhlp32.exe文件。如果我将(旧的)winhlp32.exe文件放在Windows 10的应用程序文件夹中,并将winhlp32.exe.mui文件放在名为en US的子文件夹中,则如果我在应用程序文件夹中输入命令“winhlp32.exe myhelpfile.hlp”,帮助文件将工作。但是,如果我运行应用程序exe(由VB6创建)并按F1键,它将运行Windows 10 winhlp32.exe存根,而不是应用程序文件夹中的winhlp32.exe


有谁能建议如何说服VB6应用程序(编译之前或之后)从应用程序文件夹而不是Windows文件夹中使用winhlp32.exe吗?

简短的故事-您可能会收到警告,您知道迁移VB6应用程序是一项繁重的任务,可能无法找到将WinHelp迁移到HTMLHelp的简单方法

官方建议(10年):

忘记WinHelp,它是历史记录并迁移到CHM帮助文件格式。

但是,也许您已经找到了我的答案(在Windows10上搜索Run WinHelp)并阅读了所有进一步的链接:

请注意,有一个工具专门用于迁移上下文相关的F1帮助

在上面的修复前后,我尝试了旧VB6程序的WinHelp,它在Windows10(版本1803)上运行

您可能希望尝试的另一个解决方案(取决于您的部署和IT环境):

引自本文(感谢Komeil Bahmanpour):

“请注意,由于所有权和权限问题,试图手动替换Windows文件夹中的winhlp32.exe和Windows 7的Windows US文件夹中的winhlp32.exe.mui的用户面临覆盖限制。”

其他信息:

我可能错了,但我相信(旧的)联机帮助文件通常作为Microsoft Windows的一部分受版权保护。分发这些文件通常会违反版权法(正如您在问题中提到的)

AFAIK开发人员不允许分发WinHlp32.exe的Vista版本或将其包含在其安装中。每个想使用WinHelp的用户都必须直接从Microsoft下载WinHelp更新并自行安装

许多年来,应用程序的帮助一直是.chm。微软在1997年左右发布了工具HH Workshop(HTMLHelp SDK 1.4)。大约在2006年3月,在与MVP的讨论中,Microsoft帮助团队宣布WinHelp将被弃用(逐步淘汰)。WinHelp的架构使得微软不得不从头重写它,以满足WindowsVista代码标准。从那时起.CHM一直是我们应用程序帮助的唯一选择

这意味着什么(请注意,我们现在大约十年后了!):

  • Windows Vista/7/8/10不再附带WinHelp运行时(WinHelp32.exe)
  • ISV(独立软件供应商)应停止将WinHelp作为可行的帮助系统进行推广
  • 如果帮助作者还没有转移到HTMLHelp1.x(.chm),那么他们应该转移到HTMLHelp1.x(.chm)
HH Workshop足以编写.CHM帮助文件。我正在使用一个名为“FarHTML”的工具,它还有一些其他功能(拖放TOC/索引编辑等)。还有一些高端的更昂贵的工具(您提到的RoboHelp)具有高级功能,例如“在不同的帮助系统之间转换”。

试试(未经测试,但您应该知道)


App.Path获取可执行文件的当前路径,因此只需确保winhlp32.exe文件就在那里。

是的,如果是我的代码在按F1键时起作用,但VB6处理F1,我认为这会起作用。(将代码添加到许多表单以捕获F1键不是我想讨论的问题!)我已经成功地在Windows 7和10中实现了这项技术。在帮助文件名之前添加上下文整数也有效。例如:Shell App.Path&“\winhlp32.exe-N123 myhelpfile”请注意,在应用程序文件夹(大小为283648)中有Windows XP版本的winhlp32.exe,而不是更高版本(大小为296960)(几年前我已在Windows 7 PC中安装)是很重要的。较大的版本在%windir%文件夹之外无法工作-它只生成了一个包含“(9009)”的消息框
 Shell App.Path & "\winhlp32.exe myhelpfile"