在 Java 中更换 Windows 10 张壁纸
Change Windows 10 Wallpaper in Java
我想使用 Java 更换我的 Windows 墙纸,并在网上搜索了解决方案。 If found this code on Whosebug.
import java.util.HashMap;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.*;
public class WallpaperChanger {
public static void main(String[] args) {
//supply your own path instead of using this one
String path = "D:\stone.png";
SPI.INSTANCE.SystemParametersInfo(
new UINT_PTR(SPI.SPI_SETDESKWALLPAPER),
new UINT_PTR(0),
path,
new UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_SENDWININICHANGE));
}
public interface SPI extends StdCallLibrary {
//from MSDN article
long SPI_SETDESKWALLPAPER = 20;
long SPIF_UPDATEINIFILE = 0x01;
long SPIF_SENDWININICHANGE = 0x02;
@SuppressWarnings("serial")
SPI INSTANCE = (SPI) Native.loadLibrary("user32", SPI.class, new HashMap<Object, Object>() {
{
put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
}
});
boolean SystemParametersInfo(
UINT_PTR uiAction,
UINT_PTR uiParam,
String pvParam,
UINT_PTR fWinIni
);
}
}
但这对我不起作用,我收到此错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.jna.IntegerType.(IJZ)V
at com.sun.jna.platform.win32.WinDef$UINT_PTR.(WinDef.java:566)
at de.dogyman.bc.main.WallpaperChanger.main(WallpaperChanger.java:15)
我以前从未使用过 JNA,我真的不知道代码到底做了什么,所以我不知道错误从何而来。
我将这些 jar 导入到我的构建路径中:
我希望有人能帮助我找到解决方案或给我另一种更换壁纸的方法Java。
您使用的 jna.jar
和 jna-platform.jar
版本不兼容。您可以在 https://github.com/java-native-access/jna
下载这些 jar 的最新版本
我想使用 Java 更换我的 Windows 墙纸,并在网上搜索了解决方案。 If found this code on Whosebug.
import java.util.HashMap;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.*;
public class WallpaperChanger {
public static void main(String[] args) {
//supply your own path instead of using this one
String path = "D:\stone.png";
SPI.INSTANCE.SystemParametersInfo(
new UINT_PTR(SPI.SPI_SETDESKWALLPAPER),
new UINT_PTR(0),
path,
new UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_SENDWININICHANGE));
}
public interface SPI extends StdCallLibrary {
//from MSDN article
long SPI_SETDESKWALLPAPER = 20;
long SPIF_UPDATEINIFILE = 0x01;
long SPIF_SENDWININICHANGE = 0x02;
@SuppressWarnings("serial")
SPI INSTANCE = (SPI) Native.loadLibrary("user32", SPI.class, new HashMap<Object, Object>() {
{
put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
}
});
boolean SystemParametersInfo(
UINT_PTR uiAction,
UINT_PTR uiParam,
String pvParam,
UINT_PTR fWinIni
);
}
}
但这对我不起作用,我收到此错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.jna.IntegerType.(IJZ)V at com.sun.jna.platform.win32.WinDef$UINT_PTR.(WinDef.java:566) at de.dogyman.bc.main.WallpaperChanger.main(WallpaperChanger.java:15)
我以前从未使用过 JNA,我真的不知道代码到底做了什么,所以我不知道错误从何而来。
我将这些 jar 导入到我的构建路径中:
我希望有人能帮助我找到解决方案或给我另一种更换壁纸的方法Java。
您使用的 jna.jar
和 jna-platform.jar
版本不兼容。您可以在 https://github.com/java-native-access/jna