gpt4 book ai didi

java - 使用 Java 在 Windows 中设置壁纸

转载 作者:行者123 更新时间:2023-12-01 11:06:11 25 4
gpt4 key购买 nike

我正在尝试使用 Java 在 Windows 7 中设置壁纸。我尝试使用答案 here 中的代码和 here 。它在 Windows 8 和 10 中完美运行,但在 7 中则不然。没有错误,它只是不执行任何操作。我尝试设置不同的 1920x1080 壁纸(这是在控制面板中设置的分辨率)和不同的文件格式(png、jpg、bmp),并在几台不同的计算机上运行该程序。我在应该设置壁纸的行之后的代码运行良好。我正在使用 JNA 版本 4.2.0 和 Java 8 更新 60。

有什么方法可以使用 Java 在 Windows 7 中设置壁纸吗?

编辑:

这是我的代码:

import java.util.HashMap;

import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIFunctionMapper;
import com.sun.jna.win32.W32APITypeMapper;

public class WallpaperChanger {

public interface SPI extends StdCallLibrary {

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);
}

public static void main(String[] args) {
System.out.println("changing");

String filename = "C:\\wallpapers\\wallpaper.jpg";

SPI.INSTANCE.SystemParametersInfo(
new UINT_PTR(SPI.SPI_SETDESKWALLPAPER), new UINT_PTR(0),
filename, new UINT_PTR(SPI.SPIF_UPDATEINIFILE
| SPI.SPIF_SENDWININICHANGE));
System.out.println("changed");
}

}

“它不起作用”是指代码运行但壁纸没有改变。

最佳答案

事实证明,Windows 7 不喜欢将 jpeg 图像设置为壁纸。您需要先将图像文件转换为Bitmap,然后将bmp图像设置为背景。

关于java - 使用 Java 在 Windows 中设置壁纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32920284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com