任何人都可以帮我用纯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);