ShowHelp函数失败通知

我是C#中的新手,并且正在为实用工具验证帮助文件的主题ID内容。 以下功能对我启动帮助文件非常有用:

 Help.ShowHelp(this, HelpFile.Text, HelpNavigator.TopicId, topicIDStr);

如果Help.ShowHelp()函数无法使用提供的CHM文件和主题ID启动.CHM(帮助文件),那么我需要向用户提供关于启动失败的通知。

以下是伪代码示例:

If Help.ShowHelp() failed
{
    Messagebox("Failed to launch help")
}

我在网上搜索,但无法找到函数或从ShowHelp()返回类型/参数,它将通知showHelp()函数的失败。

以下事情已经尝试过了:

  • 由于我来自MFC背景,我试图在C#中找到与GetLastError()相关的函数。 因此,建议使用getlastwin32error(),但不提供失败情况下的最后一个错误

  • Help.ShowHelp()的参数或返回类型对于查找失败条件没有用。

  • 谢谢阅读。


    这很难回答,因为我们没有太多关于如何使用topicIDStr的信息。 格式化的contextID号码如我的文章创建上下文敏感帮助的应用程序中所示,您可以通过代码检查号码范围。

    但是,再次,您必须在开发应用程序和创建帮助文件时检查所有'topicID'。 很多事情取决于你的应用程序如何调用帮助。

    您可能知道,这两个文件(ALIAS和MAP)的目的是为了简化开发人员和帮助作者之间的协调(请参阅上面的链接)。 映射文件将一个ID链接到地图编号 - 通常这可以由开发人员轻松创建并传递给帮助作者。 然后,帮助作者创建一个将ID链接到主题名称的别名文件。 可以通过FAR HTML从外部进行检查。 FAR HTML是一个充满各种创作,文件和HTML实用程序的工具箱。

    在这里输入图像描述

    请记住,HTMLHelp大约20岁,由Ralph Walden用C ++编写。 .NET(如VB或C#)Help类是一个很好的老HTMLHelp API调用的包装,以及Microsoft程序员对托管代码的快速和肮脏的编码。 非托管代码是人的方式,是第二个(困难的)解决方案。

    所以,当你真的想深入这一点时,我会给出一些链接和信息作为起点。 但是你必须自己编写你的需求。

    如何从托管的Visual C#应用程序使用非托管HTML帮助API

    将HTML帮助连接到C ++ / MFC程序(PDF)

    HH_GET_LAST_ERROR命令引用缺少的文件Hherror.h,可以在以下Microsoft知识库文章中找到它。

    HtmlHelp.h文件对HH_GET_LAST_ERROR发表了评论,说“未实现”,但它看起来至少部分实现了。 如果我打电话给HtmlHelp(0,PChar(mHelpFile),HH_HELP_CONTEXT,911); 其中911是无效的ContextID,则HH_GET_LAST_ERROR返回错误0x8004020A和说明文本“编译的帮助(.chm)文件不包含上下文ID”。 对于大多数类型的错误,HH_GET_LAST_ERROR似乎返回0x80004005“未指定的错误”。

    作为一个想法,请只看看:OCX文件上的LoadLibrary在Windows 7 x64中失败

    正如其他人所提到的,您可以检查File.Exists,并在下面的代码示例中显示Process.Start(...)调用。

    private void button1_Click(object sender, EventArgs e)
    {
        string helpFilePath = Application.StartupPath + @"help-subfolderC-Sharp-CHM-example.chm";
    
        // Verify if the file exists
        if (File.Exists(helpFilePath))
        {
            Process.Start(helpFilePath);
        }
        else
        {
            Console.WriteLine(string.Format("File not found [{0}]", helpFilePath));
        }
    }
    
    链接地址: http://www.djcxy.com/p/34521.html

    上一篇: ShowHelp function fail notification

    下一篇: Correct usage of ?? operator