C# 通过命令行更改chm文件中的页面

C# 通过命令行更改chm文件中的页面,c#,.net,chm,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 Pr

我有一个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文件。如果我的帮助文件已经打开,有没有办法更改页面?如果有办法通过命令行实现这一点,那将是一个很好的起点

正如海伦之前提到的,我真的建议使用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#包括上面的代码和具有不同帮助查看器窗口的帮助文件(仅用于show case的不同CHM文件)。

就像之前提到的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#包括上面的代码和具有不同帮助查看器窗口的帮助文件(仅用于展示案例的不同CHM文件)。

我可以问一下您为什么不使用.NET Framework的方法吗?我可以问一下您为什么不使用.NET Framework的方法吗?