Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNA loadLibrary()方法显示带有参数的错误_Java_Jna - Fatal编程技术网

Java JNA loadLibrary()方法显示带有参数的错误

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

我想使用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_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));

        }

}