无法独立打开Windows 7帮助文件

Mar*_*ean 2 c# windows windows-7

在Windows 7中,如果我运行像Minesweeper或Mahjong Titans这样的游戏,然后从游戏菜单中选择"帮助",我会得到一个独立的帮助窗口,我可以从中导航到其他主题(可能是随附的所有帮助文件) OS).请注意,我始终选择"离线帮助",而不是"在线帮助".

我想从C#中的按钮单击事件中打开这些文件.问题是,我不知道这些文件的存储位置,甚至是什么扩展名.

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

如果我右键单击帮助窗口并选择"查看源代码",我会发现它基本上是一个网页.示例<body>标记是:

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

我可以从C#程序访问mshelp:// windows/...吗?或者还有另一种方法可以做我想要的吗?

Han*_*ant 5

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Microsoft帮助查看器SDK应当关心你.此博客文章中提到了MSHC创作工具.