一直想有个显示日历及日程安排的桌面,winxp时代可以用web 桌面同步google calendar实现(遗憾的是当时不知道可以这么做),现在电脑换成了win7 系统,还64位版本,没了web 桌面,只好找相关软件,可对多数软件不满意,要么太华丽,要么乱七八糟的功能太多,且要能同步google calendar才不错。知道的软件中,rainlendar收费,且俺不喜欢那个界面;gminder能提示事件,且那个事件界面合俺口味,可不能在桌面显示日历;lifer不知道怎么样,想试来着,可它暂时还不支持64位系统,不好评论。

后来还是决定按自己喜欢的来:把web页面变成图片,然后再自己做个桌面主题,幻灯片式的放映桌面背景。这样的一个好处是可以在桌面上看自己想要的网页信息,比如滚动新闻。俺修改后的主题文件 mydesk.theme 内容如下
-------------------------------------------------------------------------
[Theme]
; Windows 7 - IDS_THEME_DISPLAYNAME_AERO
DisplayName=MyDesk
SetLogonBackground=0

; Computer - SHIDI_SERVER
[CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-109

; UsersFiles - SHIDI_USERFILES
[CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-123

; Network - SHIDI_MYNETWORK
[CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-25

; Recycle Bin - SHIDI_RECYCLERFULL SHIDI_RECYCLER
[CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon]
Full=%SystemRoot%\System32\imageres.dll,-54
Empty=%SystemRoot%\System32\imageres.dll,-55

[Control Panel\Cursors]
AppStarting=%SystemRoot%\cursors\aero_working.ani
Arrow=%SystemRoot%\cursors\aero_arrow.cur
Crosshair=
Hand=%SystemRoot%\cursors\aero_link.cur
Help=%SystemRoot%\cursors\aero_helpsel.cur
IBeam=
No=%SystemRoot%\cursors\aero_unavail.cur
NWPen=%SystemRoot%\cursors\aero_pen.cur
SizeAll=%SystemRoot%\cursors\aero_move.cur
SizeNESW=%SystemRoot%\cursors\aero_nesw.cur
SizeNS=%SystemRoot%\cursors\aero_ns.cur
SizeNWSE=%SystemRoot%\cursors\aero_nwse.cur
SizeWE=%SystemRoot%\cursors\aero_ew.cur
UpArrow=%SystemRoot%\cursors\aero_up.cur
Wait=%SystemRoot%\cursors\aero_busy.ani
DefaultValue=Windows Aero
DefaultValue.MUI=@main.cpl,-1020

[Control Panel\Desktop]
Wallpaper=C:\mywebdesk\mygcal.jpg
TileWallpaper=0
WallpaperStyle=0
Pattern=

[VisualStyles]
Path=%ResourceDir%\Themes\Aero\Aero.msstyles
ColorStyle=NormalColor
Size=NormalSize
ColorizationColor=0x80555555
Transparency=1
Composition=1
VisualStyleVersion=10

[boot]
SCRNSAVE.EXE=

[MasterThemeSelector]
MTSM=DABJDKT

[Sounds]
SchemeName=@%SystemRoot%\System32\mmres.dll,-800

[Theme.A]
DisplayName=未保存的主题
[Theme.W]
DisplayName=+ZypP3VtYdoROO5iY-
[Metrics]
NonclientMetrics=88 1 0 0 1 0 0 0 17 0 0 0 17 0 0 0 21 0 0 0 21 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 19 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 19 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0    
LangID=2052
IconMetrics=76 0 0 0 100 0 0 0 75 0 0 0 1 0 0 0 244 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 5 0 206 162 200 237 209 197 186 218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    
[Control Panel\Colors]
Scrollbar=200 200 200
Background=70 132 142
ActiveTitle=153 180 209
InactiveTitle=191 205 219
Menu=240 240 240
Window=255 255 255
WindowFrame=100 100 100
MenuText=0 0 0
WindowText=0 0 0
TitleText=0 0 0
ActiveBorder=180 180 180
InactiveBorder=244 247 252
AppWorkspace=171 171 171
Hilight=51 153 255
HilightText=255 255 255
ButtonFace=240 240 240
ButtonShadow=160 160 160
GrayText=109 109 109
ButtonText=0 0 0
InactiveTitleText=67 78 84
ButtonHilight=255 255 255
ButtonDkShadow=105 105 105
ButtonLight=227 227 227
InfoText=0 0 0
InfoWindow=255 255 225
ButtonAlternateFace=0 0 0
HotTrackingColor=0 102 204
GradientActiveTitle=185 209 234
GradientInactiveTitle=215 228 242
MenuHilight=51 153 255
MenuBar=240 240 240
[Slideshow]
ImagesRootPath=C:\mywebdesk
Interval=600000
Shuffle=1
-------------------------------------------------------------------------
这个主题把 C:\mywebdesk 目录下的所有图片幻灯片式的变为桌面背景。那么vbscript的任务就是更新该目录下的web图片。俺的myfig.vbs文件内容如下:
-------------------------------------------------------------------------------
'myurl1,myurl2: the source web pages.
'minw: the minimum width of the created picture.
'difftime: reconnect the webpage in difftime minutes
'para: the parameter used in the program IECapt.exe

DIM minw,difftime,myurl1,myurl2,para
minw=800
difftime=10
myurl1="http://www.google.com/calendar"
myurl2="http://news.sina.com.cn/news1000/index.shtml"
para=" --min-width="&CStr(minw)
Set WshShell = Wscript.CreateObject("Wscript.Shell")

WshShell.Run ("IECapt.exe --url="&myurl1&" --out=gcal.jpg"&para),SW_HIDE,true
WshShell.Run ("IECapt.exe --url="&myurl2&" --out=newsina.jpg"&para),SW_HIDE,true
call gotosleep(difftime)
do
WshShell.Run ("IECapt.exe --url="&myurl1&" --out=gcal.jpg"&para),SW_HIDE,true
call gotosleep(difftime)
WshShell.Run ("IECapt.exe --url="&myurl2&" --out=newsina.jpg"&para),SW_HIDE,true
call gotosleep(difftime)
loop

Sub GoToSleep (iMinutes)
Dim Ending,t
Ending = DateAdd("n",iMinutes,now)
Do
  t = DateDiff("n",Now,Ending)
  If t <= 0 Then Exit Do
  WScript.Sleep 59990
Loop
End Sub
----------------------------------------------------------------------------------
该脚本生成两个文件:gcal.jpg 和 newsina.jpg,文件最小宽度是800像素,每10分钟(其实略小于10分钟,因为一分钟sleep的时候用了59990而不是60000)更新一个图片,配合 mydesk.theme, 可以在桌面上看自己的日历日程安排和新浪的滚动新闻,修改其中的url能显示自己想看的网页。脚本用到了web转图片的小文件 IECapt.exe,网上一搜就出来。
(其中gotosleep()函数抄自 http://anandpv.spaces.live.com/blog/cns!AFCCA5892B178862!2002.entry)

这样的修改仅仅是基本满足了俺的需要,再做细点要花不少精力,只好作罢。还是希望有好的桌面日历软件(方便、实用、有特点)尽快出来。

对xp系统,myfig.vbs 文件内容可以改为以下(参考了http://my.donews.com/allon/2008/10/18/%E9%9A%8F%E6%9C%BA%E6%9B%B4%E6%8D%A2%E6%A1%8C%E9%9D%A2%E5%A3%81%E7%BA%B8%E7%9A%84vbscript/):
-------------------------------------------------------------------------------
'objpic: store the fullname of the created bmp file.
'i: which picture is created.
'm: the maximum number of created bmp files, the name from 0.bmp to (m-1).bmp.
'myurl: the source web page.
'minw: the minimum width of the created picture.
'direc: the current directory.
'difftime: reconnect the url in difftime minutes
'para: the parameter used in the program IECapt.exe

DIM objpic,i,m,myurl,minw,direc,difftime,para
i=0
m=10
minw=800
difftime=10    
myurl="http://news.sina.com.cn/news1000/index.shtml"
direc=left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\"))
para=" --min-width="&CStr(minw)
Set WshShell = Wscript.CreateObject("Wscript.Shell")

do
objpic=CStr(i)&".bmp"
fullobjpic=direc&CStr(i)&".bmp"
WshShell.Run ("IECapt.exe --url="&myurl&" --out="&objpic&para),SW_HIDE,true
WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper",fullobjpic
WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\TileWallpaper","0","REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\WallpaperStyle","0","REG_SZ"
WshShell.run "RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters" 
i=(i+1) mod m
call gotosleep(difftime)
loop

Sub GoToSleep (iMinutes)
Dim Ending,t
Ending = DateAdd("n",iMinutes,now)
Do
  t = DateDiff("n",Now,Ending)
  If t <= 0 Then Exit Do
  WScript.Sleep 60001
Loop
End Sub
---------------------------------------------------