如何将HLP文件转换成CHM文件

21

我需要帮助,我有一些 .hlp 文件,想将其转换为 .chm 文件,因为 .hlp 文件在 Windows 10 上无法运行。

我该怎么做?


https://superuser.com/questions/32452/converting-windows-help-file-to-a-more-user-friendly-format - Hans Passant
2
请参考http://www.komeil.com/blog/windows-help-program-winhelp-winhlp32-exe#comment-1467...按照这个步骤,您就可以在Windows 10上(或根据该页面上的其他说明,在早期版本上)直接打开.HLP文件。 - Jim Balter
这不是一个编程问题。应该发布在https://superuser.com上。 - Apostolos
4个回答

31

根据您的要求,我看到有两种或更多解决方案:

  • 将WinHelp(HLP)转换为HTMLHelp(CHM)或PDF
  • 在Windows10上运行WinHelp文件

将WinHelp(HLP)转换为HTMLHelp(CHM):

我的网站上有一篇教程,提供了一个逐步描述如何在免费软件/共享软件和“低预算”水平上将WinHelp(HLP)转换为HTMLHelp(CHM)。下载区的转换项目示例包括一个工作结构和示例文件。

当然,您可以使用帮助撰写工具(HAT),例如Help+ManualHelpScribble或任何其他HAT,将现有的WinHelp项目转换为HTMLHelp。

在Windows 10上运行WinHelp:

WinHlp32 for Windows 10恢复了在Windows 10上打开和查看.hlp文件的功能。

WinHelp (.hlp) 格式自上世纪90年代初就存在了,已被HTML Help 1.x (.chm) 取代。微软强烈建议您在大约十年前停止使用 WinHelp。但对于一个测试应用程序,在我的Windows10机器上运行得非常好。

enter image description here

对于修复旧版 WinHelp Viewer,需要一些繁琐的步骤。请注意,我这里不是指 *.chm 帮助文件的 HTMLHelp Viewer。

以下解决步骤取决于您的 Windows 10 版本(32 位或 64 位)。要查找您的系统类型(32 位或 64 位),按住 Windows+R。在弹出的运行对话框中键入 msinfo32 并按 Enter。

您知道,尝试打开帮助文件 (*.hlp) 会导致访问 Microsoft 支持页面。Windows 程序中打开帮助时出错:“未包含该功能”或“不支持帮助”

您将找到适用于 Windows 8.1 的下载链接,但必须以特殊方式安装才能在 Windows 10 上使用(Windows8.1-KB917607-x64.msu)。

  1. 以管理员身份启动命令提示符(请注意-此处为德语示例)!
  2. 将下载的 .msu 文件提取到临时目录

md msu-extracted

expand Windows8.1-KB917607-x64.msu /f:* .\msu-extracted

使用上述命令解压缩包含在内的279个文件的CAB文件。

  1. 提取包含279个文件的CAB文件。

cd msu-extracted

md cab-extracted

expand Windows8.1-KB917607-x64.cab /f:* .\cab-extracted

  1. 根据您的语言设置查找匹配的MUI文件,例如使用“cs-”、“de-”或“en-”。使用x86变体的用户需要运行“dir x86de-.”

cd cab-extracted

  1. Navigate to the given path for your language "... de-de ..." e.g.:

    cd amd64_microsoft-windows-winhstb.resources_31bf3856ad364e35_6.3.9600.20470_de-de_1ab8cd412c1028d0
    
  2. Here we'll find “winhlp32.exe.mui”. Now we need to replace e.g. %SystemRoot%\de-de\winhlp32.exe.mui with our new file:

    takeown /f "%SystemRoot%\de-de\winhlp32.exe.mui"
    icacls "%SystemRoot%\de-de\winhlp32.exe.mui" /grant "%UserName%":f
    ren %SystemRoot%\de-de\winhlp32.exe.mui winhlp32.exe.mui.w10
    copy winhlp32.exe.mui %SystemRoot%\de-de\winhlp32.exe.mui 
    takeown /f "%SystemRoot%\winhlp32.exe"
    icacls "%SystemRoot%\winhlp32.exe" /grant "%UserName%":f
    ren %SystemRoot%\winhlp32.exe winhlp32.exe.w10
    cd ..
    dir *.exe /s
    
  3. Find the right path starting either with amd64 or x86 and navigate to it:

    cd "amd64_microsoft-windows-winhstb_31bf3856ad364e35_6.3.9600.20470_none_1a54d9f2f676f6c2"
    copy winhlp32.exe %SystemRoot%\winhlp32.exe 
    

编辑:

在最后一个cd命令步骤中,你不需要替换_none_(所有单个步骤都在2017年9月1日和2018年8月24日经过测试,在Windows 10上工作)。

主要Microsoft Windows更新后,以上所述的解决方法会被重置。

编辑:(从评论中复制,感谢@dxiv)

最后几步的另一种选择是将winHlp32文件完全复制到其他位置,如C:\ etc [\ de-de],然后在提升的命令提示符中重新关联ftype hlpfile = C:\ etc \ winHlp32%1。这避免了与sfc和未来的Windows更新冲突,并且当通过关联打开HLP时仍然可以正常工作(在资源管理器中双击或在cmd提示符中启动old.hlp)。


1
@Cristhopher Mancilla Gonzalez:如上所述,您可以使用工具将WinHelp(HLP)转换为HTMLHelp(CHM)。请参见我上面的回答中的链接。"逐步说明"是最直接的方式,Help+Manual很昂贵,HelpScribble有免费试用和低廉的价格。但您需要一些帮助作者的知识。在大多数情况下,您需要反编译*.hlp文件以获取项目*.hpj文件。清理所有内容和目录后,您需要编译一个CHM文件。我建议您尝试使用HelpScribble[Convert WinHelp](https://www.helpscribble.com/vista.html)。 - help-info.de
1
@Cristhopher Mancilla Gonzalez:请注意 - 在寻求工具时,请使用软件推荐 - help-info.de
1
@help-info.de 迟到了+1,只想补充一下最后几个步骤的替代方案,即将winHlp32文件完全复制到其他地方,比如C:\etc[\de-de],然后在提升的命令提示符中重新关联ftype hlpfile=C:\etc\winHlp32 %1。这避免了与sfc和未来的Windows更新冲突,并且当通过关联打开HLP(在资源管理器中双击或在cmd提示符中键入“start old.hlp”)时,HLP仍将正常工作。 - dxiv
1
@sp00n,仅有.exe文件是不够的,你还需要从包中获取其他.dll.mui文件。这与你看到的错误9009一致,意味着找不到文件。 - dxiv
2
@sp00n “.mui”文件放在一个以区域设置命名的子目录中,例如我的情况是“en-us”。这就足以运行“exe”,并在Win7和Win10下得到验证。要通过关联打开帮助文件,您还需要将“.hlp”文件与该实例的“winHlp32”相关联。 - dxiv
显示剩余8条评论

3

1
我不明白答案中的“Chrome扩展”部分是什么意思,但这个URL是一个非常简单的拖放HLP和CHM转换器,可以将其转换为RTF和HTML。格式可能不完美,但足以恢复丢失的信息。 - matt wilkie
在Web检查器控制台中设置window.gadb=false可以绕过该页面的反广告拦截器。 - Adam
把一个 .hlp 文件放进去,然后它就可以正常工作了。 - Edwin Yip

1
您是一位英雄!我最终使用了HelpScribble并使用其中的反编译器链接here
引用他们的网站:

如果您有一个没有HPJ和RTF源文件的现有WinHelp文件,您可以下载WinHelp反编译器从HLP文件重新创建HPJ和RTF源文件。将helpdc21.zip中的文件提取到一个新文件夹中。然后,您可以通过在命令提示符中输入: helpdeco helpfile.hlp(其中helpfile.hlp是您要反编译的帮助文件),轻松反编译任何.hlp文件。反编译器将生成HPJ和RTF文件以及一系列位图文件(如果帮助文件包含图像)。在HelpScribble中使用“项目|导入帮助项目”导入帮助文件。

这将提取hlp文件的源文件。
最后,只需在HelpScribble中导入生成的hpj文件。从那里,您可以使用选项制作平面手册将其简单地导出为html文件。
嘭。完成了。

你所指的“英雄”是谁?这是针对另一个用户的帖子发表的评论吗? - SherylHohman
谢谢,它起作用了,它从.hlp文件中反编译了一个rtf文件。 - Edwin Yip

0

大家好,经过长时间的搜索,我的结论是:.HLP文件无法在Windows 8和10上执行,只能在Windows 7及以下版本上执行。.CHM文件可以在Windows 8和Windows 10上执行。因此,我不得不在Windows 10上使用Help Development Studio创建我的新.chm文件以便在其上执行。我的旧文件.HLP已经过时了。虽然这花费了我很多时间,但我对这种类型的文件有了更深入的了解。 最后,感谢您对我的问题的贡献。


2
两年多以前,我已经推荐了“将WinHelp(HLP)转换为HTMLHelp(CHM)”和“微软强烈建议您在大约十年前放弃WinHelp”。对于特殊的测试用例,在Windows10下使用还有额外的提示。所以我不明白为什么你的评论现在成了答案。我认为这只是一个评论。 - help-info.de
2
这是解决问题的唯一方法。我没有任何权限使用命令提示符编辑这些文件,我的公司不允许这样做。因此,我制定了这个特定问题的解决方案。 - Cristhopher Mancilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接