JNA loadLibrary () метод показывает ошибку с аргументами - PullRequest
0 голосов
/ 27 марта 2019

Я хочу установить изображение в качестве обоев рабочего стола, используя Java.Я нашел решение в интернете, но оно не работает.Я не могу понять, что с ним не так.

Вот что мне это говорит?Вы можете мне помочь?

enter image description here

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

        }

}

1 Ответ

0 голосов
/ 30 марта 2019

Хорошо. Все нужно изменить Map<Object, Object> на Map<String, Object>

...