用纯java改变windows壁纸,

时间:2014-01-23 20:51:18

标签: java windows

任何人都可以帮我用纯java代码更改我的( windows xp )桌面壁纸,
 我已经从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 = "C:\\w.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
        );
  }
}  

它删除了壁纸,但它从未改变它,我得到一个黑色的桌面,

第二个:

import java.util.*;

public class changer {

    public static void main(String args[]) {
        String wallpaper_file = "C:\\w.jpg";
        changer mychanger = new changer();
        mychanger.Change(wallpaper_file);
    }


    static {
        Runtime.getRuntime().loadLibrary("user32");
        //System.loadLibrary("user32");
    }

    public int Change(String path) {
        return SystemParametersInfo(20, 0, path, 0);   //my error //
    }

    public static native int SystemParametersInfo(int uiAction, int uiParam,
            String pvParam, int fWinIni);


}

在此代码中,我收到该行的错误: 返回SystemParametersInfo(20,0,路径,0);

0 个答案:

没有答案