现在困扰我好几个星期的一个问题是如何从Java创建快捷方式文件。在我说出任何其他内容之前,我已经遍布谷歌(以及在此网站上,包括这个:Creating shortcut links (.lnk) from Java)试图寻找有用的东西。我需要的不是一个创建快捷方式的安装程序包,而是从代码创建快捷方式。我的意思是快捷方式是一个.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/");
}
}
我玩弄它,并设法在我的桌面上创建一个.lnk快捷方式。但是,我提出了两个问题:
我无法更改图标,尽管路径将其链接到正确的图标。 我创建了一条路径,引导我进入C:/ Users / USER / Documents,然而,每当我点击它的快捷方式时,我都会转到C:/。当我删除快捷方式时,对话框确实显示路径为file://// C:/ Users / USER / Documents。
我知道上面的代码最初是为了创建Internet快捷方式,所以我相信我可能采取了错误的方法。我很感激你能给我的任何帮助/链接。
答案 0 :(得分:0)
我运行了你的代码,它对我来说很好。我可以点击链接,浏览器将通过google.com启动。我也可以编辑图标。我正在使用Win 7,我的默认浏览器是Firefox 16.0.2。
答案 1 :(得分:0)
http://www.mindfiresolutions.com/Creating-shortcut-from-a-Java-Application-1712.php
使用jni使用库jShellLink
的简单教程