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