2016-02-11 47 views
1

據我的理解,當程序訪問.hlp文件時,Window的幫助程序會處理請求。我所擁有的是一個較老的exe,它想通過菜單選項跳轉到.hlp文件中的特定主題。當然,Windows幫助提供了通用的「找不到主題」的錯誤,但是我真正喜歡的是如果它也告訴我它期望找到什麼主題,所以我可以創建一個包含缺少主題的.hlp。有什麼方法可以查看更詳細的錯誤日誌或查看請求本身,而不需要exe的源代碼?從exe中調試嵌入的缺少幫助主題

error window

+0

你正在運行什麼操作系統版本? –

+0

哦,當然,WIndows7,64位。但該計劃本身顯着更老...大約1998/1999年。 – Rajada

+0

我想昨天添加標籤'Winhelp'是在這個問題的背景下。 –

回答

1

短篇小說 - 沒有你的* .exe(或反編譯)的源代碼,並沒有舊的WinHelp項目文件,我想說的第一個念頭 - 沒有機會。

WinHelp(.hlp)格式自20世紀90年代初期就已出現,並已被HTML Help 1.x(.chm)所取代。微軟強烈建議你大約在十年前離開WinHelp。但是對於一個測試應用程序來說,它運行在我的Windows10機器上,就像一個魅力(藉口德語文本),並採取了一些重要步驟來修復WinHelp Viewer。請注意,我不會說這裏背景中顯示的* .chm幫助文件的HTMLHelp查看器。

enter image description here

Windows幫助(的WinHlp32.exe)是已包含在開始與Microsoft Windows 3.1操作系統的Microsoft Windows版本中的幫助程序。但是,Windows幫助程序尚未針對許多版本進行重大更新,並且不再符合Microsoft的標準。因此,從Windows Vista的發佈開始並在Windows 7中繼續,Windows幫助程序將不會作爲Windows的一項功能發佈。如果要查看32位.hlp文件,則必須從Microsoft下載中心下載並安裝該程序(WinHlp32.exe)。

我假設你已經安裝了這個軟件包並且有一個正在運行的32位應用程序,它在你的Windows7機器上運行WinHelp * .hlp文件。菜單中只有一個主題似乎對您不利。

這可能是由應用程序調用錯誤的TopicID或連接的幫助文件的TopicId中的拼寫錯誤造成的。也許程序員還沒有分配一個主題。造成您的錯誤的原因很多。

如果您在編寫幫助文件方面有一些經驗,那麼您知道已編譯的WinHelp文件* .hlp包含映射helpTopicId = topic。編譯WinHelp時,您將再次需要此映射和別名文件!

創建一個新的WinHelp * .hlp文件是一個很難的方法(對於我也是15年後不用)。你必須反編譯並重新編譯。一個編輯的話題。您可能會被警告 - 因爲丟失了contextId。見舊的東西從我的網站,網址爲:Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial

你可能會幸運地反編譯爲HELPCONTEXTID

enter image description here

通常只有一個App.HelpFile *的.hlp從應用程序聯繫在一起。要在標準窗口中顯示特定主題,Visual Basic 6調用如下所示: WinHelp(hWnd,App.HelpFile,HELP_CONTEXT,ByVal CLng(TopicID))。所以只有代碼更新會給你一個新的TopicId的機會。這必須匹配(新)幫助文件。

+0

是的,我正在運行Microsoft提供的幫助版本作爲可選下載。但似乎我並不完全清楚。我已經用一個十六進制編輯器在應用程序周圍挖了一遍,而且我不完全確定菜單選項是否已經實現。我所希望的是,有人知道如何捕捉到「找不到主題」的錯誤,並使用某種技巧來獲取更多信息,所以我不必強行猜測主題ID。喜歡,也許更多的信息被記錄在事件查看器中。但如果真的沒有辦法吸引更多的信息,我想這是無法幫助的。 – Rajada

+0

@Rajada:如果可能的話,[反編譯器](http://stackoverflow.com/questions/414068/is-there-a-visual-basic-6-decompiler)是一個不錯的選擇。您也可以創建一個帶有200個虛擬主題的新_hlp_文件,以找出主題ID並將其重命名爲測試。 ** TopicID **必須從1增加1到200,這很有用。 –

+0

@Rajada:如果他們已經閱讀[MSDN]的摘錄(https://msdn.microsoft.com/en-us/library/aa261329%28v=vs.60%29.aspx?f=255&MSPPError=- 2147217396):_提示如果您有幾個幫助主題,在開始輸入HelpContextID之前可能有助於建立編號方案。爲應用程序中的每個表單或主要元素指定不同範圍的數字,例如,第一個表單爲1000 - 1999,第二個表單爲2000 - 2999,等等._ –