我想出了URL中参数的用法:
对于主题,在“帮助和手册”中,选择底部的选项卡“主题选项”,然后在“主题ID:”字段中输入主题名称。
我为“登录”章节选择的主题ID是“登录”,然后使用URL:
file:///D:/RiskModeller/Manual/HTML/index.html?login.htm
浏览器将在登录章节中打开手册。
然后我在Delphi中尝试了以下代码:
procedure TfrmHelp.FormActivate(Sender: TObject);
var
Res: HINST;
Buffer: array[0..MAX_PATH] of Char;
SEInfo: TShellExecuteInfo;
HtmlFile, Anchor: string;
begin
HtmlFile := 'D:\RiskModeller\Manual\HTML\index.html';
Anchor := '?login.htm';
FillChar(Buffer, SizeOf(Buffer), 0);
Res := FindExecutable(PChar(HtmlFile), nil, Buffer);
if Res <= 32 then
raise Exception.Create(SysErrorMessage(Res));
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(SEInfo);
with SEInfo do
begin
lpFile := PChar(string(Buffer));
// lpParameters := PChar(Format('"%s"', [HtmlFile + Anchor])); {Nols ... Also not working}
lpParameters := PChar(HtmlFile + Anchor);
nShow := SW_SHOWNORMAL;
fMask := SEE_MASK_FLAG_NO_UI; // Do not display an error message box if an error occurs.
end;
if not ShellExecuteEx(@SEInfo) then
RaiseLastOSError;
end;
但是此Delphi代码会生成以下URL:
file:///D:/RiskModeller/Manual/HTML/index.html%3Flogin.htm
应该是:
file:///D:/RiskModeller/Manual/HTML/index.html?login.htm