700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JAVA调用JNA修改桌面壁纸

JAVA调用JNA修改桌面壁纸

时间:2018-07-12 12:15:24

相关推荐

JAVA调用JNA修改桌面壁纸

一时兴起想用java定时修改桌面,折腾一番,终于成功。

其实无非是java调用jna,实现对dll的调用,控制修改了桌面,纯属娱乐,不喜勿喷。

代码在此:

import java.util.Timer;import java.util.TimerTask;import com.sun.jna.Native;import com.sun.jna.platform.win32.Advapi32Util;import com.sun.jna.platform.win32.WinReg;import com.sun.jna.win32.StdCallLibrary;public class EditDesktop {public static void main(String[] args) {final Timer timer = new Timer();TimerTask task = new TimerTask() {private int count=0;private int tot=0;String img="E:/AAAprojectDoc/img/"; @Overridepublic void run() {this.count++;this.tot++;img="E:/AAAprojectDoc/img/"+count+".jpg";change(img);if (count ==11)count = 0; if(tot==12){System.out.println("定时器停止了,img="+img);timer.cancel();// 停止定时器}}};timer.schedule(task, 0, 3000);// 1秒一次 }private interface MyUser32 extends StdCallLibrary {MyUser32 INSTANCE = (MyUser32) Native.loadLibrary("user32", MyUser32.class);boolean SystemParametersInfoA(int uiAction, int uiParam, String fnm, int fWinIni);}public static void change(String img){Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "Control Panel\\Desktop", "Wallpaper", img); //WallpaperStyle = 10 (Fill), 6 (Fit), 2 (Stretch), 0 (Tile), 0 (Center) //For windows XP, change to 0 Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "Control Panel\\Desktop", "WallpaperStyle", "10"); //fill Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "Control Panel\\Desktop", "TileWallpaper", "0"); // no tiling// refresh the desktop using User32.SystemParametersInfo(), so avoiding an OS reboot int SPI_SETDESKWALLPAPER = 0x14; int SPIF_UPDATEINIFILE = 0x01; int SPIF_SENDWININICHANGE = 0x02; // User32.Systemboolean result = MyUser32.INSTANCE.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, img, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE ); }}

下了3个jart包,4.2.1版成功可用。

所需jar包下载:/so/search/s.do?q=JNA&t=doc

参考资料:用Java更换Windows桌面壁纸/blog/2178860

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。