用於打開CHM的代碼片段似乎並不乾淨(??? dummyFormForHelp.Value
,constant
)。 Help.ShowHelp()
就像是一個很好的HTMLHelp API調用的封裝(另請參閱:HTMLHelp API - VBA, VB6 und VB2003)。參數有點固執。
第二個念頭 - 請閱讀HTMLHelp API - HH_CLOSE ALL Note並交叉檢查您的代碼。由於HH API中的錯誤,請確保在主窗體的Query_Unload事件中不調用OnClose。
請使用正確的參數調用Help.ShowHelp()
函數,如下所示。
Help.ShowHelp(this, CHMFile, HelpNavigator.Topic, "foobar.htm");
從我的示例應用程序的截圖上面所有下面的代碼是爲我工作。請嘗試您的需求。打開網址在這裏是特殊的,而不是在你的屏幕截圖中顯示的網址(網址...)。
#region mnuHelp ---------------------------------------------
private void mnuHelpContents_Click(object sender, EventArgs e)
{
//--- Show contents of help file.
Help.ShowHelp(this, helpProviderMain.HelpNamespace);
}
private void mnuHelpIndex_Click(object sender, EventArgs e)
{
//--- Show index of help file.
Help.ShowHelpIndex(this, helpProviderMain.HelpNamespace);
}
private void mnuHelpSearch_Click(object sender, EventArgs e)
{
//--- Show search tab of help file.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.Find);
}
private void mnuHelpTest_Click(object sender, EventArgs e)
{
//--- Show a web site with help content.
Help.ShowHelp(this, "http://www.stackoverflow.com");
}
private void mnuHelpOpenTopicByName_Click(object sender, EventArgs e)
{
//--- Open topic by name.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.Topic, "Garden/tree.htm");
}
private void mnuHelpOpenTopicById_Click(object sender, EventArgs e)
{
//--- Open topic by ID.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.TopicId, "20010");
}
#endregion -----------------------------------------------
編輯:
下載並運行我們的MJ's Diagnostics工具。
MJ's Diagnostics是一個小型實用程序,它報告是否安裝了所有HTML Help運行庫& DLL並將其註冊到正確的位置。如果你有編譯器崩潰,並且在簡單地打開一個CHM或者從CHM搜索選項卡搜索時崩潰,那麼這個實用程序將幫助你理清咒罵DLL的問題。
當你從shell(windows文件資源管理器)打開CHM文件並轉到> URL時,它會工作嗎?你是通過什麼作爲父'(ShowHelp(...)'?第一個參數?整個主機窗體或特定的控制? – dlatikay
@dlatikay我試圖添加null,新的Form()和主窗口,並始終 –
您是否試過(仔細地)刪除[.chm文件中描述的hh.dat文件在某些文件夾中無法以編程方式訪問](https:/ /stackoverflow.com/questions/41488501/chm-file-is-not-programmatically-accessible-in-some-folders/41661701#41661701)? –