用java将bing每日壁纸设置为win7壁纸

原文:用java将bing每日壁纸设置为win7壁纸

源代码下载地址:http://www.zuidaima.com/share/1550463716592640.htm

之前发表了“用java将bing每日壁纸设置为win7壁纸”,看了评论后就决定将这个想法在win7上实现。

其实在win7上的实现和在ubuntu上的实现并没有很大的区别,前面解析xml和下载图片是一样的,区别是后面设置壁纸。

win7下设置壁纸的代码有点麻烦,没有linux直接调用命令那样好用。后来在设置开机启动项的时候发现,运行这个jar文件的顺序会先于启动网络服务,于是我用一个do...while来解决这个问题(具体见main函数的代码)。

编译这个程序需要用到jna.jar包和jna-platform.jar包。

建议将其编译打包成可执行jar文件,然后点击开始菜单----“所有程序”-----“启动”右键选“打开”,将jar文件拖入到打开的文件夹,这样每天开机的时候壁纸就能自动换了~~

package com.zuidaima;

import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.*;

/**
*@author www.zuidaima.com
**/
public class MyWallpaper {
	public static void main(String[] argc) throws ParserConfigurationException, SAXException, IOException
	{
		MyWallpaper wallpaper = new MyWallpaper();

		do{
		String path = wallpaper.getThePath();
		wallpaper.downLoadWallpaper(path);
		wallpaper.settingWallpaper();
		}while(wallpaper.isConnect()!=true);
	}

	public interface SPI extends StdCallLibrary {

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

	public boolean isConnect() throws IOException
	{
		Runtime runtime = Runtime.getRuntime();
		Process process = runtime.exec("ping www.baidu.com");
		InputStream is = process.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		if(br.readLine()==null)
		{
			//System.out.println("The network is wrong!");
			return false;
		}
		else
		{
			//System.out.println("The network is well");
			return true;
		}
	}

	public String getThePath() throws ParserConfigurationException, SAXException, IOException
	{
		//getting the path of the bing jpg picture via analysis xml
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse("http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=8");
		document.normalize();
		String relativePath =document.getElementsByTagName("url").item(0).getTextContent();
		String path ="http://www.bing.com/"+relativePath;
		return path;
	}

	public void downLoadWallpaper(String path) throws IOException
	{
		//download the jpg file
		URL url = new URL(path);
		DataInputStream dis = new DataInputStream(url.openStream());
		FileOutputStream fos = new FileOutputStream(new File("C:\\wallpaper.jpg"));
		byte[] buffer = new byte[1024];
		int length;
		while((length=dis.read(buffer))>0)
		{
			fos.write(buffer,0,length);
		}

			dis.close();
			fos.close();
	}

	public void settingWallpaper()
	{
		 String localpath = "C:\\wallpaper.jpg";

	     SPI.INSTANCE.SystemParametersInfo(
	          new UINT_PTR(SPI.SPI_SETDESKWALLPAPER),
	          new UINT_PTR(0),
	          localpath,
	          new UINT_PTR(SPI.SPIF_UPDATEINIFILE | SPI.SPIF_SENDWININICHANGE));
	}
}
	    			
时间: 2024-11-04 00:41:28

用java将bing每日壁纸设置为win7壁纸的相关文章

使用java将bing的每日壁纸设置为ubuntu壁纸

原文:使用java将bing的每日壁纸设置为ubuntu壁纸 源代码下载地址:http://www.zuidaima.com/share/1550463714806784.htm 早上起来浏览bing的时候突然有了想要把bing的每日壁纸设为ubuntu的桌面壁纸的想法,中午从机房回来后就开始写代码.先是解析xml,获取壁纸的下载地址,然后是下载壁纸,最后调用ubuntu的命令设置壁纸. 在我的ubuntu13.04上运行成功.建议将这个java文件编译然后打包成jar,修改/etc/rc.lo

Windows 聚焦的锁屏壁纸设置为桌面壁纸

需求: Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸,想设置为桌面壁纸. 步骤如下: 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里. a. 打开“资源管理器 b. 在地址栏复制粘贴下方路径后按回车键,即可快速跳转至这个隐藏的文件夹. %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets PS: 右键单击“Assets”

【开源小软件 】Bing每日壁纸 V1.2.1

Bing每日壁纸发布V1.2版本,下载地址Release V1.2.1 该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事. 本次新增国际化支持,以及桌面widget和自定义定时切换时间. 新增特性 国际化 支持中英文,跟随系统语言 桌面widget 桌面右下角,新增一个widget窗体,可以切换壁纸 点击标题,会打开壁纸故事. 定时切换支持选择时间 不再是默认的1小时,允许你自己选择周期 桌面widget 完整功能特性 自动获取Bing最新图片并设置为壁纸

RTFSC - Android5.1 壁纸设置流程简析

Android5.1 壁纸设置流程浅析 Ubuntu14.04  Android5.1  Source Insight3 源代码请参阅http://androidxref.com/ 这里只是简单分析一下5.1里是如何设置壁纸的:这个流程和4.4有一些不同.但基本都是找个地方存放壁纸文件,需要的时候读取,设置的时候更新 这里只看设置的过程.权当参考. 机器使用launcher3,在桌面上长按,底部显示设置壁纸的入口.进入设置壁纸界面,观察log可知,此界面属于Trebuchet.也是launche

Android Launcher分析和修改2——Icon修改、界面布局调整、壁纸设置

上一篇文章说了如何修改Android自带Launcher2的默认界面设置(http://www.cnblogs.com/mythou/p/3153880.html). 今天主要是说说Launcher里面图标.布局.壁纸等的设置问题.毕竟我们一般修改Launcher,这些都是需要修改的地方,也是比较容易修改的部分.按照效果图(效果图在上一篇文章),分开说明如何修改,以及里面涉及的逻辑分析. 原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3155692.h

java 反射 根据属性 动态设置值

package com.jhl.jvm.lesson8; import java.lang.reflect.Field; /** * * @author jhl * java 反射 根据属性 动态设置值 demo * */ public class ExceptionLog { private String exceptionLogId; private String processingType; private String type; private String content; pub

java中double四舍五入并设置小数点位数的问题

本文系转载,原文地址:http://blog.csdn.net/star_huang/article/details/7639267 今天遇到个需要将一个double类型的数据保留小数点后两位的问题.在网上搜寻的集中解决方案,copy来一下,备用 首先result_value是处理前的double get_double是用来保存我处理后的double   //方案一: get_double = (double)(Math.round(result_value*100)/100.0) //方案二:

关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

1 1. 对JButton大小的设置 2 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 3 button.setPreferredSize(new Dimension(30,30)); 4 //(30,30) 是你要设置按钮的大小 5 2. 对JButton透明的设置 6 ——按钮设置为透明,这样就不会挡着后面的背景 7 button.setContentAreaFilled(false); 8 3. 对JButton去掉按钮的边框的设置

Eclipse中java文件头注释格式设置

Eclipse中java文件头注释格式设置 Eclipse中java文件头注释格式设置 windows->preferences->java->Code Templates->comments->Type->edit Eclipse注释规范模版总结 新建类文件 /** * @ClassName:     ${file_name} * @Description:   ${todo}(用一句话描述该文件做什么) * * @author          ${user} *