Java JNA loadLibrary()方法显示带有参数的错误
我想使用Java将图像设置为桌面墙纸。我在互联网上找到了一个解决方案,但它不起作用。我不明白它怎么了 这就是它对我说的? 你能帮我吗Java JNA loadLibrary()方法显示带有参数的错误,java,jna,Java,Jna,我想使用Java将图像设置为桌面墙纸。我在互联网上找到了一个解决方案,但它不起作用。我不明白它怎么了 这就是它对我说的? 你能帮我吗 import com.sun.jna.Native; 导入com.sun.jna.platform.win32.WinDef.UINT\u PTR; 导入com.sun.jna.win32。*; 导入java.util.HashMap; 公共类壁纸设置器{ 公共接口SPI扩展StdCallLibrary{ //来自MSDN文章 长SPI_SETDESKWALLP
import com.sun.jna.Native;
导入com.sun.jna.platform.win32.WinDef.UINT\u PTR;
导入com.sun.jna.win32。*;
导入java.util.HashMap;
公共类壁纸设置器{
公共接口SPI扩展StdCallLibrary{
//来自MSDN文章
长SPI_SETDESKWALLPAPER=20;
长SPIF_UpdateInFile=0x01;
长SPIF_sendwinichange=0x02;
//问题就在这里
SPI实例=(SPI)Native.loadLibrary(“user32”,SPI.class,new HashMap()){
{
put(选项类型映射器,w32 pitypemapper.UNICODE);
put(选项函数映射器,W32APIFunctionMapper.UNICODE);
}
});
布尔系统参数信息(
行动,
UINT_PTR uiParam,
字符串pvParam,
乌恩图夫维尼尼酒店
);
}
公共静态无效设置壁纸(字符串图像\u url){
字符串路径=图像\ url;
SPI.INSTANCE.SystemParametersInfo(
新UINT_PTR(SPI.SPI_Setdesk壁纸),
新UINT_PTR(0),
路径
新UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_sendwinichange));
}
}
好的。将Map
更改为Map
需要所有操作。好的,该错误消息表示Map参数应为Map
,但您提供的是Map
。确定。我改为Map
,现在当我选择一个图像时,它会将橙色设置为桌面图像。这似乎是另一个我无法帮助解决的问题,因为我并不真正了解user32库。我怀疑您的参数是错误的,所以请检查这些参数以及文档。如果您仍然遇到困难,请在新问题中提供一个(代码、您想要设置的图像以及您得到的图像),因为这是一个关于编译问题的问题。谢谢。我自己做的。它只设置下载到您电脑上的图片。我试图设置计算机上不存在的图片。@Nikita欢迎使用堆栈溢出。为了节省我们这些想要帮助您的人的时间,请使用回答部分回答您的问题,以显示您是如何解决它的,因此我们不必阅读评论线程就知道这仍然不是一个活跃的问题!
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.*;
import java.util.HashMap;
public class WallpaperSetter {
public interface SPI extends StdCallLibrary {
//from MSDN article
long SPI_SETDESKWALLPAPER = 20;
long SPIF_UPDATEINIFILE = 0x01;
long SPIF_SENDWININICHANGE = 0x02;
//Here is the problem
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 setWallpaper(String image_url) {
String path = image_url;
SPI.INSTANCE.SystemParametersInfo(
new UINT_PTR(SPI.SPI_SETDESKWALLPAPER),
new UINT_PTR(0),
path,
new UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_SENDWININICHANGE));
}
}