【发布时间】:2014-12-05 23:19:10
【问题描述】:
我们公司正在将我们的帮助系统迁移到 Flare 下的 HTML5 格式。我们还在 URI 命令行上使用 Flare CSHID 的帮助系统添加了基于主题的访问,用于直接访问主题,例如 index.html#CSHID=GettingStarted 以启动 GettingStarted.html 帮助页面。
我们的应用程序是用 C++ 编写的,并利用 Win32 ShellExecute() 函数生成与 HTTP 关联的默认应用程序来显示帮助系统。我们注意到ShellExecute() 在没有指定主题标签时可以正常工作,例如
ShellExecute(NULL, _T("open"), _T("c:\\Help\\index.html"), NULL, NULL, SW_SHOWNORMAL);
此函数将启动与查看 HTML 页面相关的默认浏览器,在这种情况下,File:/// 协议处理程序将启动,浏览器将启动,您将在地址栏中看到 file:///c:/Help/index.html。
但是,一旦为主题添加了# 信息,ShellExecute() 将无法打开页面
ShellExecute(NULL,_T("open"),_T("c:\\Help\\index.html#cshid=GettingStarted"),NULL,NULL,SW_SHOWNORMAL);
如果浏览器完全打开,您将被定向到 file:///c:/Help/index.html 而没有 #cshid=GettingStarted 主题标识。
请注意,如果文件协议处理程序通过ShellExecute() 参与,这只是一个问题,如果帮助系统存在于网络上,并且使用了 Http 或 Https 协议处理程序,则一切正常。
对于我们的客户,其中一些在专用 LAN 上,我们不能总是依赖 Internet 访问,因此我们的帮助系统必须随应用程序一起提供。
【问题讨论】:
标签: http hashtag shellexecute flare