【发布时间】:2011-07-21 09:37:52
【问题描述】:
我迫切需要您的专业知识来解决 Windows-7 问题。
场景:我有一个基于框架的帮助包,用于设置上下文相关的帮助调用。 Java 应用程序能够控制帮助包打开到哪个页面,方法是将代表所需 HTML 命名为锚点的标记传递给名为 pophelp 的 HTML 文件。此文件具有 javascripting,可从 URL 末尾读取传递的标记,并将其映射到帮助包中的相应 HTML 文件并打开它。
问题:上述方案适用于 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
结果: ?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();
}
}
结果: ?TAG=callsubflow 未通过。
任何帮助将不胜感激!
【问题讨论】:
-
BasicService 似乎适用于Google on Java,所以这似乎是本地文件所特有的。在那种情况下,我的 WAG 是某种“安全升级”(尽管不要让我解释它),它已针对本地文件进行了更改。
-
我也是这么想的,但是当你需要它时,没有解决方法或设置来使它工作,这似乎很疯狂。我不喜欢我的电脑以绝对的方式规定我能做什么和不能做什么。