必应壁纸每日更新(含源码),小代码大作用,每日更新桌面,焕然一新

无·法 2016-06-15 08:15:47
'==============================================================================================
'名 称:必应壁纸每日更新
'描 述:程序每天从必应搜索首页下载高清大图设置到桌面背景
'使用方法:双击即可
'编 程:sysdzw 原创开发,如果有需要对模块扩充或更新的话请邮箱发我一份
'发布日期:2016-6-15
'博 客:http://blog.csdn.net/sysdzw
'Email :sysdzw@gmail.com
'QQ :171977759
'版 本:V1.0.0 初版 2016-6-15
' V1.1.53 因必应更新图片路径导致无法下载,本程序做了对应更新 2018-9-12
'==============================================================================================
Option Explicit

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim strWallPaperLocal As String
Const BING_PICTURE_DIR = "D:\Bing\" '壁纸保存目录

Sub Main()
App.TaskVisible = False
If App.PrevInstance Then
MsgBox "该程序已经在后台运行中了,请勿重复运行!", vbExclamation
Else
MsgBox "请点击“确定”,程序会在后台自动到必应上每日更新壁纸并设置到您的电脑桌面上", vbInformation
Do
If Dir(BING_PICTURE_DIR, vbDirectory) = "" Then MkDir BING_PICTURE_DIR
strWallPaperLocal = BING_PICTURE_DIR & Format(Now, "yyyymmdd") & ".jpg"
If Dir(strWallPaperLocal) = "" Then
writeToFile "运行日志.txt", Now & vbTab & "发现目标文件" & strWallPaperLocal & "为空,准备用InternetCheckConnection检测网络,如果网络正常则调用函数flushWallPaper下载并更新桌面", False
If InternetCheckConnection("http://cn.bing.com/", &H1, 0&) <> 0 Then
writeToFile "运行日志.txt", Now & vbTab & "网络正常,开始调用函数flushWallPaper", False
Call flushWallPaper
writeToFile "运行日志.txt", Now & vbTab & "图片下载完毕并保存到" & strWallPaperLocal & ",已经更新桌面", False
End If
End If
Sleep 20000 '延时5秒检测一次
writeToFile "运行日志.txt", Now & vbTab & "循环检测一次"
Loop
End If
End Sub
'更新墙纸
Private Sub flushWallPaper()
' On Error GoTo Err1
Dim strWallPaperUrl$, i1&, i2&, strData$, XmlHttp As Object, Temp() As Byte

'得到墙纸的url地址
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", "http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1", False
writeToFile "运行日志.txt", Now & vbTab & "开始执行XmlHttp.Send", False
XmlHttp.Send
writeToFile "运行日志.txt", Now & vbTab & "XmlHttp.Send执行完毕!", False
strData = StrConv(XmlHttp.ResponseBody, vbUnicode) '得到页面源代码
i1 = InStr(strData, "url"":""")
i2 = InStr(strData, """,""urlbase")
If i1 > 0 And i2 > 0 Then strWallPaperUrl = "https://cn.bing.com" & Mid(strData, i1 + 6, i2 - i1 - 6)
If strWallPaperUrl <> "" Then '下载图片文件
XmlHttp.Open "GET", strWallPaperUrl, False
XmlHttp.Send
If XmlHttp.ReadyState = 4 Then
Temp() = XmlHttp.ResponseBody
Open strWallPaperLocal For Binary As #1
Put #1, , Temp()
Close #1
End If
Set XmlHttp = Nothing

SavePicture LoadPicture(strWallPaperLocal), BING_PICTURE_DIR & "Wallpaper1.bmp"
SystemParametersInfo ByVal 20, True, ByVal BING_PICTURE_DIR & "Wallpaper1.bmp", 1
Shell "rundll32 user32,UpdatePerUserSystemParameters"
End If

Exit Sub
Err1:
' MsgBox Err.Number & vbCrLf & Err.Description, "Private Sub flushWallPaper()"
writeToFile "运行日志.txt", Now & vbTab & "发生错误:" & Err.Number & vbCrLf & Err.Description, "Private Sub flushWallPaper()"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'功能:根据所给文件名和内容直接写文件
'函数名:writeToFile
'入口参数(如下):
' strFileName 所给的文件名;
' strContent 要输入到上述文件的字符串
' isCover 是否覆盖该文件,默认为覆盖
'返回值:True或False,成功则返回前者,否则返回后者
'备注:sysdzw 于 2007-5-2 提供
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function writeToFile(ByVal strFileName$, ByVal strContent$, Optional isCover As Boolean = True) As Boolean
On Error GoTo Err1
Dim fileHandl%
fileHandl = FreeFile
If isCover Then
Open strFileName For Output As #fileHandl
Else
Open strFileName For Append As #fileHandl
End If
Print #fileHandl, strContent
Close #fileHandl
writeToFile = True
Exit Function
Err1:
writeToFile = False
End Function
...全文
1383 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
笨狗先飞 2016-08-20
  • 打赏
  • 举报
回复
spaceengine公司电脑卡的不要不要的,回家研究去。。。
笨狗先飞 2016-08-20
  • 打赏
  • 举报
回复
Himawari 8实时的比较好,时差半小时,刮个台风什么也还可以看见 加起来花了一天,处理好了。
无·法 2016-08-20
  • 打赏
  • 举报
回复
引用 9 楼 bakw 的回复:
去搞个抓Himawari 8当桌面的吧
看样子你也比较喜欢这方面吧,推荐你个软件spaceengine,里面宇宙空间的图片美的不要不要的,想从哪个角度就从哪个角度截图


引用 14 楼 Chen8013 的回复:
对于我这种可以说是“壁纸万年不更”的人来说,这种软件无论多么优秀、多么强悍,其实都没一点吸引力。


我以前也基本不换一年都换不到一两次。后来换换发现不错,经常保持新鲜感。

今天自动更新的壁纸很漂亮
无·法 2016-08-19
  • 打赏
  • 举报
回复
引用 8 楼 theforever 的回复:
光到必应上,而且还只是每天一图,不如多搜集一些地址,分分类,点不同类别自动换,再加上使用本地图片文件夹的功能。这样就不再是一个DEMO级的程序了。
你可以下载个搜狗壁纸,做的非常好,好多分类,图片资源大,可设置多久更换一次。 我这个只是看必应搜索的背景壁纸特别漂亮,每天都更新一个精美的壁纸,用vb做个小程序自动下载设置到桌面上,操作简单省事,还没搜狗壁纸那样占内存。 总之就是个小程序啦
舉杯邀明月 2016-08-19
  • 打赏
  • 举报
回复
对于我这种可以说是“壁纸万年不更”的人来说,这种软件无论多么优秀、多么强悍,其实都没一点吸引力。
笨狗先飞 2016-08-19
  • 打赏
  • 举报
回复
http://isnil.com/himawari8.php?z=4
实时大地球
  • 打赏
  • 举报
回复
我也是不喜欢那些既占内存,又免不了打广告的壁纸软件,所以没装那些。
有一个DLL,注册一下,就会在系统显示里添加“壁纸自动换”选项卡,可以用本机图片设置壁纸,小巧实用。只是不能下载网络图片。
我现在是哪个都不用,想换手动换。从心理上说,不一定多长时间才换一次,这样最省。
赵4老师 2016-08-18
  • 打赏
  • 举报
回复
我找好图一般去这里:http://www.vcg.cn/
笨狗先飞 2016-08-18
  • 打赏
  • 举报
回复
去搞个抓Himawari 8当桌面的吧
  • 打赏
  • 举报
回复
光到必应上,而且还只是每天一图,不如多搜集一些地址,分分类,点不同类别自动换,再加上使用本地图片文件夹的功能。这样就不再是一个DEMO级的程序了。
赵4老师 2016-06-16
  • 打赏
  • 举报
回复
搅一搅更活泛。
赵4老师 2016-06-15
  • 打赏
  • 举报
回复
我把你号称高大上的防止重复运行的程序放在同一个宿主机上的两个虚拟机中运行……
舉杯邀明月 2016-06-15
  • 打赏
  • 举报
回复
楼主,都这个年代了,你“防止重复运行”还在用App.PrevInstance ? 太Out了吧! 这种方法是“不堪一击”的。
无·法 2016-06-15
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
我把你号称高大上的防止重复运行的程序放在同一个宿主机上的两个虚拟机中运行……
如果想进入每个虚拟机都显示这样漂亮的图像当然都可以啦。为什么要禁止呢 帅锅?
无·法 2016-06-15
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
楼主,都这个年代了,你“防止重复运行”还在用App.PrevInstance ? 太Out了吧! 这种方法是“不堪一击”的。
其他的方法要多少行代码啊。在精简于功能取个折中吧。 而且这主要就是防止小白双击后看不见了又去双击,所以基本满足使用啦。
无·法 2016-06-15
  • 打赏
  • 举报
回复

成果
舉杯邀明月 2016-06-15
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
我把你号称高大上的防止重复运行的程序放在同一个宿主机上的两个虚拟机中运行……
你就知道瞎捣乱…………

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧