从Java创build一个快捷方式文件

现在一直困扰我的一个问题是我如何从Java创build一个快捷方式文件。 现在,在我说别的之前,我已经看遍Google(也包括这个: 从Java创build快捷方式链接(.lnk) )试图find有用的东西。 我需要的不是一个安装程序包,它创build一个快捷方式,而是从代码创build一个快捷方式。 我所说的快捷方式是通常在桌面上find的.lnk文件。

我发现的一个有用的东西是这个程序:

Java代码:

import java.io.*; public class WindowsUtils { private WindowsUtils() { } private static final String WINDOWS_DESKTOP = "Desktop"; public static String getWindowsCurrentUserDesktopPath() { //return the current user desktop path return System.getenv("userprofile") + "/" + WINDOWS_DESKTOP ; } public static void createInternetShortcutOnDesktop(String name, String target) throws IOException { String path = getWindowsCurrentUserDesktopPath() + "/"+ name + ".URL"; createInternetShortcut(name, path, target, ""); } public static void createInternetShortcutOnDesktop(String name, String target, String icon) throws IOException { String path = getWindowsCurrentUserDesktopPath() + "/"+ name + ".URL"; createInternetShortcut(name, path, target, icon); } public static void createInternetShortcut(String name, String where, String target, String icon) throws IOException { FileWriter fw = new FileWriter(where); fw.write("[InternetShortcut]\n"); fw.write("URL=" + target + "\n"); if (!icon.equals("")) { fw.write("IconFile=" + icon + "\n");* } fw.flush(); fw.close(); } public static void main(String[] args) throws IOException { WindowsUtils.createInternetShortcutOnDesktop("GOOGLE", "http://www.google.com/"); } } 

我玩弄了它,并设法在我的桌面上创build一个.lnk快捷方式。 但是,我有两个问题:

我无法改变图标,尽pipepath链接到一个正确的图标。 我做了一个把我引导到C:/ Users / USER / Documents的path,但是,每当我点击它的快捷方式,我把它带到C:/。 当我删除快捷方式时,对话显示确实path是file://// C:/ Users / USER / Documents。

我知道上面的代码原本是为了创buildInternet快捷方式,所以我相信我可能会采取错误的方法。 我将不胜感激任何帮助/链接,你可以给我。

Solutions Collecting From Web of "从Java创build一个快捷方式文件"

我可以在GitHub上推荐这个仓库:

https://github.com/BlackOverlord666/mslinks

在那里我找到了一个简单的解决方案来创建快捷方式:

ShellLink.createLink("path/to/existing/file.txt", "path/to/the/future/shortcut.lnk");

如果你想阅读快捷方式:

 File shortcut = ...; String pathToExistingFile = new ShellLink(shortcut).resolveTarget(); 

如果要更改快捷方式的图标 ,请使用:

 ShellLink sl = ...; sl.setIconLocation("/path/to/icon/file"); 

希望这可以帮助你:)

亲切的问候

Josua Frank

我运行你的代码,对我来说工作正常。 我可以点击链接,浏览器是通过google.com启动的。 我也可以编辑图标。 我使用Win 7,我的默认浏览器是Firefox 16.0.2。

http://www.mindfiresolutions.com/Creating-shortcut-from-a-Java-Application-1712.php

一个很好的简单教程,使用jni使用库称为jShellLink