我迫切需要您的专业知识来解决 Windows-7 问题。
设想:我有一个基于框架的帮助包,它是为上下文相关的帮助调用而设置的。 Java 应用程序能够通过将表示所需 HTML 的名为“anchor”的标记传递到名为 pophelp 的 HTML 文件来控制帮助包打开的页面。该文件具有 JavaScript 功能,可从 URL 末尾读取传递的标记,并将其映射到帮助包中相应的 HTML 文件并打开它。
Issue:上述场景适用于 Windows XP,但不再适用于 Windows 7。
Java应用程序的调用机制:rundll32 url.dll,FileProtocolHandler file://filepath/pophelp.html?tag
迄今为止的调查结果摘要:url.dll 似乎不再允许在 Windows 7 中通过 URL 传递参数。参数将被删除。我还尝试使用 Java 中的 Desktop.getDesktop().browse() 进行相同类型的调用,但它似乎也删除了 .html 之后的所有参数。
示例代码:
在 Windows XP 中运行的原始调用 --
运行命令:rundll32 url.dll,FileProtocolHandler file://C:\Program Files\App System\App-Editor-8.0.1\help\pophelp.html?TAG=callsubflow
Result:?TAG=callsubflow 未通过。
使用 Desktop.getDesktop().browse() 的新代码 --
public static void main(String[] args) {
String url = "file:///C:/Program Files/App System/App-Editor-8.0.1/help/pophelp.html?TAG=callsubflow";
try {
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.BROWSE)) {
desktop.browse(new URI(url.replace(" ", "%20")));
}
}
} catch (IOException e) {
System.out.println("Unable to open "+url+": "+e.getMessage());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
Result:?TAG=callsubflow 未通过。
任何援助将不胜感激!