通过命令行在chm文件中更改页面

时间:2013-04-09 13:46:38

标签: c# .net chm

我有一个包含大量帮助按钮的C#项目。单击其中一个按钮时,它会打开一个帮助文件(Help.chm)到相关页面。以下是其中一个页面的代码:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "hh.exe";
startInfo.Arguments = "Help.chm::/html/97198ffa-adb2-4897-b5e4-5bba54252900.htm";//page id
Process.Start(startInfo);

这样可以正常工作,但现在当用户单击其他帮助按钮(或者甚至是同一个按钮)时,会打开一个新的帮助文件,从而可能会打开许多​​冗余的chm文件。如果我的帮助文件已经打开,有没有办法改变页面?如果有办法通过命令行执行此操作,那将是一个很好的起点。

1 个答案:

答案 0 :(得分:3)

就像之前提到的Helen一样,我真的建议使用Help.ShowHelp方法。

    private void btnHelpTopic1_Click(object sender, EventArgs e)
    {
        // sHTMLHelpFileName_ShowWithNavigationPane = "CHM-example_ShowWithNavigationPane.chm"
        // This is a HelpViewer Window with navigation pane for show case only 
        // created with Microsoft HTMLHelp Workshop
        helpProvider1.HelpNamespace = Application.StartupPath + @"\" + sHTMLHelpFileName_ShowWithNavigationPane;
        Help.ShowHelp(this, helpProvider1.HelpNamespace, @"/Garden/tree.htm");
    }

    private void btnHelpTopic2_Click(object sender, EventArgs e)
    {
        helpProvider1.HelpNamespace = Application.StartupPath + @"\" + sHTMLHelpFileName_ShowWithNavigationPane;
        Help.ShowHelp(this, helpProvider1.HelpNamespace, @"/Garden/flowers.htm");
    }

请查看代码和小GUI(附带快照)。用户按钮单击后刷新主题(例如帮助主题1)。请注意,使用Microsoft HTMLHelp Workshop创建的帮助文件可能需要自动同步参数。

C# code, GUI and opened help file.

为了下载,我提供了一个C#VS2008 Project,包括上面的代码和带有不同帮助查看器窗口的帮助文件(仅用于展示案例的不同CHM文件)。