【问题标题】:Can't open windows 7 help files standalone无法独立打开 Windows 7 帮助文件
【发布时间】:2014-07-24 23:19:51
【问题描述】:

在 Windows 7 中,如果我运行像 Minesweeper 或 Mahjong Titans 这样的游戏,然后从游戏菜单中选择“帮助”,我会看到一个独立的帮助窗口,我可以从中导航到其他主题(大概是所有帮助文件操作系统附带)。请注意,我总是选择“离线帮助”,而不是“在线帮助”。

我想通过 C# 中的按钮单击事件打开这些文件。问题是,我不知道这些文件存储在哪里,甚至不知道扩展名是什么。

当我打开独立帮助窗口时,任务管理器会将进程列为位于 C:\Windows 中的“HelpPane.exe”。如果我尝试双击 HelpPane.exe,则没有任何反应。

如果我右键单击帮助窗口并选择“查看源代码”,我看到它基本上是一个网页。一个示例

标签是:

<BODY helptype="toc" helpurl="mshelp://windows/?tocid=ebd9c148-6e8d-4359-83d5-f4b700ab2f8f" helpsource="local" Lang="en-US">

我可以从 C# 程序访问 mshelp://windows/... 吗?还是有其他方法可以做我想做的事?

【问题讨论】:

    标签: c# windows windows-7


    【解决方案1】:

    HelpPane.exe 是一个进程外 COM 服务器。您可以激活它并让它轻松地在您自己的 C# 程序中显示内容。要开始使用,请使用 Project + Add Reference 并选择 c:\windows\helppane.exe。这从嵌入在 helppane.exe 中的 COM 类型库创建互操作库,使用“APClientHelpPane”命名空间生成。

    显示 Windows 帮助主题内容文件的示例程序:

    using System;
    using WinHelp = APClientHelpPane;
    
    class Program {
        static void Main(string[] args) {
            var obj = new WinHelp.HxHelpPaneServer();
            string docpath = @"C:\Windows\Help\Windows\ContentStore\en-US\windowsclient.mshc";
            obj.DisplayContents(docpath);
        }
    }
    

    在 Windows 8.1 的 en-US 版本上进行了测试。不知道你在 Windows 7 上会有多少运气,我怀疑你必须修改 .mshc 文件的路径。当然,这应该与您有关。 Microsoft 也没有义务在未来版本的 Windows 上保持此功能,此自动化接口未记录在案。对各种 Windows 程序的主题名称进行逆向工程并不那么明显,我怀疑您可以使用通过检查显示的内容找到的 mshelp:// URL,但是它们在 Windows 版本中的稳定性是您必须要做的事情找出困难的方法。

    您应该对Microsoft Help Viewer SDK 感兴趣。 this blog post 中提到了 MSHC 创作工具。

    【讨论】:

    • 我正在体验快乐!这段代码工作得很好。我想我必须将 .mshc 路径更改为 C:\ProgramData\Microsoft\HelpLibrary\content\Microsoft\store,因为当我在硬盘驱动器中搜索任何 .mshc 文件时会出现这种情况,但您提供的路径有效。这是我为自己使用而编写的程序,所以我不太关心前向兼容性。现在我要解开具体的主题名称,感谢您提供的链接。
    • 更新:.mshc 文件的两个路径都有效,并打开相同的帮助页面。很奇怪。
    • 可能是同一个文件。微软喜欢使用硬链接来保持 Windows 兼容。就像 c:\windows\system32 中的所有文件实际上都存储在 c:\windows\winsxs 中一样。
    • 似乎找到主题ID比预期的要容易:右键单击帮助页面并“查看源代码”,然后使用标签中列出的“helpurl”。例如,obj.DisplayContents(@"mshelp://windows/?tocid=ebd9c148-6e8d-4359-83d5-f4b700ab2f8f"); 显示扫雷游戏的帮助主题。非常感谢你,Hans Passant!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多