我们使用以下代码在Delphi XE2的应用程序上通过A-links调用html help:
var
aLink: THH_AKLink;
begin
ZeroMemory(@aLink, SizeOf(aLink));
aLink.cbStruct := SizeOf(aLink);
{$WARNINGS OFF}
aLink.pszKeywords := PChar(AnsiString(AKeyword));
{$WARNINGS ON}
aLink.fIndexOnFail := False;
HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@aLink))
end;但是,如果在.chm文件中描述AKeyword两次,应用程序就会冻结(挂起)。在Delphi或系统库上似乎有什么问题。但是如何在应用程序上修复这个问题呢?
非常感谢你的帮助!
发布于 2013-08-08 01:27:41
目前最好的答案是删除CHM-file上所有重复的A-link,并确保上面没有重复的A-link。
发布于 2013-04-27 07:32:27
您正在使用第三方应用程序2 ALink将两次添加到已编译的chm文件中。
那么,当chm文件没有按预期工作时,你会责怪Delphi XE2吗?
1。)不能将AKeyword与一起使用
HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@aLink))您可以使用KLink关键字进行尝试:
HtmlHelpW(Handle, Application.HelpFile+'>main', HH_DISPLAY_TOPIC, DWORD_PTR(nil));
HtmlHelpW(Handle, Application.HelpFile, HH_KEYWORD_LOOKUP, DWORD_PTR(@link));ALink是他在这里的外观的一个跳跃,以及KLink显示或相关主题的跳跃。
但是,找到的主题列表不是基于索引中的关键字,而是基于.htm文件中涉及的ALink names。
这只能与ALinks一起使用。下面是一个ALink。
xy.htm的一部分
<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="ALink Name" value="UsingtheMenus">
</OBJECT>2。)在您的代码中,我看不到以下内容:
HtmlHelpW(Handle, Application.HelpFile, HH_DISPLAY_TOPIC, DWORD_PTR(nil));HH_ALINK_LOOKUP,以确保创建了帮助窗口。HH_ALINK_LOOKUP command
关键字帮助作者使用feature.
将关键字名称插入到目标主题文件中
查找区分大小写。多个查找由分号分隔。
除了自动生成的关键字,在编译.htm源文件时。

你能使用显式的KLink吗。
这是一个显式的"KLink“该位置可以位于.htm文件中的任何位置,用于关键字
<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="lookupKeyword">
</OBJECT>如果出现错误消息,则会创建有益的消息,系统会显示错误,并且应用程序将继续正常运行。来源:答案How to add support of HTML help files (.chm)....
procedure TForm1.HHALINKLOOKUPClick(Sender: TObject);
var
link : HH_AKLINK;
szUrl,szKey,szMsgText,szMsgTitle,szWindow : AnsiString;
begin
szKey := Edit1.Text; // 'UsingtheMenus';
szUrl :='Overview.htm';
szMsgText :='Error: Can''t find "'+Edit1.Text+'"!';
szMsgTitle :='Error: HH_ALINK_LOOKUP';
szWindow :='main';
with link do begin
cbStruct := sizeof(HH_AKLINK) ;
fReserved := False;
pszKeywords := PChar(szKey);
pszUrl := nil;
pszMsgText := PChar(szMsgText);
pszMsgTitle := PChar(szMsgTitle);
pszWindow := PChar(szWindow);
fIndexOnFail:= False;
end;
HtmlHelpW(Handle, Application.HelpFile+'>main', HH_DISPLAY_TOPIC, DWORD_PTR(nil));
HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@link));
end;当你ALink "UsingtheMenus“调用没有最后一个字母"s”时,你会得到这样的结果。

测试您的:与第三方应用程序更改的chm文件
你可以用超文本标记语言帮助工作坊测试任何.chm文件




https://stackoverflow.com/questions/15819792
复制相似问题