用Java更改Windows 10壁纸

时间:2016-02-21 15:17:38

标签: java windows jna wallpaper

我想使用Java更改我的Windows壁纸并在网上搜索解决方案。 If found this code on StackOverflow.

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 = "D:\\stone.png";

      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;

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

但它对我不起作用,我得到了这个错误:

  

线程中的异常&#34; main&#34; java.lang.NoSuchMethodError:com.sun.jna.IntegerType。(IJZ)V       在com.sun.jna.platform.win32.WinDef $ UINT_PTR。(WinDef.java:566)       at de.dogyman.bc.main.WallpaperChanger.main(WallpaperChanger.java:15)

我之前从未与JNA合作过,而且我也不知道代码的确切含​​义,所以我不知道错误的来源。

我将这些罐子导入我的构建路径:

JNA Platform

JNA

我希望有人可以帮我找到解决方案,或者给我另一种用Java改变壁纸的方式。

0 个答案:

没有答案