gpt4 book ai didi

java - 我可以在 Java/Groovy 中以编程方式更改我的 Windows 桌面墙纸吗?

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:05 25 4
gpt4 key购买 nike

有没有一种方法可以使用 Java(或 Groovy)来更改 Windows XP 中的桌面墙纸?我有一个每天(或任何时候)创建新图像的程序,我想要一种自动更新我的桌面的方法。

我在这个站点上似乎有一些关于 C++ 或 .NET 的问题,但我没有看到任何特定于 Java 的问题。

最佳答案

抱歉,我有点落后于@ataylor 的回答,因为我正在准备一个片段来做到这一点。是的,JNA 是一种正确的方法。给你:

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 = "C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg";

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;

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

你需要在类路径上有 JNA 库才能工作。这是在 Windows 7 中测试的,在 XP 中可能会有一些细微差别,但我认为它应该可以工作。该 API 大概是稳定的。

引用资料

编辑(2010/01/20):

我之前省略了选项 SPIF_UPDATEINIFILESPIF_SENDWININICHANGE。这些现在按照 Coding4Fun MSDN 文章中的建议使用。

关于java - 我可以在 Java/Groovy 中以编程方式更改我的 Windows 桌面墙纸吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750372/

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