我已经有了http://cam.sheratonamsterdamairportview.com/view_live1.jpg链接。 此链接指向史基浦机场的摄像头,每20秒拍摄一张照片。
我真的希望每隔20秒将这张照片更新为我的桌面背景。这可能吗?
我是否需要制作一个程序,还是可以将其与技巧相关联?我正在运行Windows 7顺便说一句。
答案 0 :(得分:2)
如果您使用的是Windows XP,则只需在桌面上添加活动内容即可。
桌面上的鼠标右键 - >属性 - >桌面标签 - > 自定义桌面 - >网络标签 - >新 - >位置“www”
设置您的网址并激活内容。你将有一个小的桌面窗口与相机的图片。如果它不会自动刷新,那么创建一个带有元刷新的简单页面,持续20秒,并为你的链接创建带有src属性设置的img标签。
我不确定上述是否适用于Vista / 7。
否则
这可能对您有用:
'Set the wallpaper
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("Process")
Set objFSO = CreateObject("Scripting.FileSystemObject")
WinPath = WshSysEnv("SystemRoot") & "\YourWallpaper.bmp"
If Not objFSO.FileExists(winpath) then
'If the file does not exist then copy it
For Each objItem in colItems
sourcePath = "\\path\here\"
rightSize = "NameHere" & objItem.CurrentHorizontalResolution & "x" & objItem.CurrentVerticalResolution & ".bmp"
objFSO.CopyFile sourcePath & rightSize, WSHShell.ExpandEnvironmentStrings ("%SystemRoot%") & "\NameYourWallpaper.bmp", overwrite = True
Next
End If
'************************************************************************************************************************************************
'Set Wallpaper Bitmap to Default
Set WshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
sWinDir = objFSO.GetSpecialFolder(0)
sWallPaper = sWinDir & "\NameYourWallpaper.bmp"
' update in registry
WshShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper
WshShell.Regwrite "HKCU\Software\Microsoft\Internet Explorer\Desktop\General\Wallpaper", sWallPaper
WshShell.Regwrite "HKCU\Software\Microsoft\Internet Explorer\Desktop\General\BackupWallpaper", sWallPaper
' let the system know about the change
WshShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
这是VBscript,它将更改桌面背景并在之后重新加载您的个人资料,以便您查看更改。
或者,如果您想要更多内容,请参阅以下代码:
此示例演示了许多有用的技术,包括: 从随机列表中挑选文件。 设置桌面壁纸。 设置桌面壁纸样式(居中,平铺或拉伸)。 编写注册表条目。 将文件移入废纸篓。 使用系统的默认编辑器编辑文件。 程序启动时(以及单击“应用”按钮时),程序将调用ReadFiles。该例程读取指定目录中文件的名称,并保存以BMP,GIF,JPG和JPEG结尾的文件。加载所有文件名后,例程调用RandomizeNames来随机化列表。
Sub ReadFiles()
Dim file As String
Dim ext As String
' Create the new file name collection.
Set FileNames = New Collection
' Get the file names.
file = Dir(DirName & "\*.*")
Do While file <> ""
If LCase$(file) <> "temp.bmp" Then
ext = UCase$(Right$(file, 4))
If ext = ".BMP" Or ext = ".GIF" Or _
ext = ".JPG" Or ext = "JPEG" _
Then _
FileNames.Add file
End If
file = Dir()
Loop
NumNames = FileNames.Count
RandomizeNames
End Sub
子例程RandomizeNames为FileNames集合中的每个名称生成一个索引数组,其中包含一个条目。对于i = 1到NumNames - 1,例程选择一个随机索引并将其交换到位置i。
Private Sub RandomizeNames()
Dim idx As Integer
Dim tmp As Integer
Dim i As Integer
ReDim Indexes(1 To NumNames)
For i = 1 To NumNames
Indexes(i) = i
Next i
' Randomize them.
For i = 1 To NumNames - 1
idx = Int((NumNames - i + 1) * Rnd + i)
tmp = Indexes(i)
Indexes(i) = Indexes(idx)
Indexes(idx) = tmp
Next i
' Point to the index to display.
NextIndex = 1
End Sub
当Timer触发时,程序调用ShowFile显示随机列表中的下一个文件。
Private Sub SwitchTimer_Timer()
Dim secs As Long
Dim pic As Integer
' See if it's time yet.
secs = DateDiff("s", Now, NextTime)
If secs <= 1 Then
If FileNames.Count > 1 Then
pic = Indexes(NextIndex)
NextIndex = NextIndex + 1
If NextIndex > NumNames Then RandomizeNames
ShowFile FileNames(pic)
End If
NextTime = DateAdd("s", Pause, Now)
secs = Pause
End If
If secs <= 60 Then
SwitchTimer.Interval = secs * 1000
Else
SwitchTimer.Interval = 60000
End If
SwitchTimer.Enabled = True
End Sub
子例程ShowFile检查样式组合框并设置注册表项以使桌面图像居中,平铺或拉伸。 接下来,如果文件是位图文件,程序只需调用SystemParametersInfo API函数来设置桌面背景图像。
如果文件不是位图文件,程序会将其加载到隐藏的PictureBox中,然后将图像保存为位图文件。然后它调用SystemParametersInfo。
Private Sub ShowFile(ByVal file_name As String)
Const STYLE_CENTERED As String = "0"
Const STYLE_TILED As String = "1"
Const STYLE_STRETCHED As String = "2"
Const TILE_NO As String = "0"
Const TILE_YES As String = "1"
Dim had_error As Boolean
' Set the display style.
had_error = False
Select Case cboStyle.Text
Case "Centered"
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "TileWallpaper", _
TILE_NO) _
Then had_error = True
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "WallpaperStyle", _
STYLE_CENTERED) _
Then had_error = True
Case "Tiled"
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "TileWallpaper", _
TILE_YES) _
Then had_error = True
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "WallpaperStyle", _
STYLE_TILED) _
Then had_error = True
Case "Stretched"
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "TileWallpaper", _
TILE_NO) _
Then had_error = True
If SetRegistryValue(HKEY_CURRENT_USER, _
"Control Panel\Desktop", "WallpaperStyle", _
STYLE_STRETCHED) _
Then had_error = True
End Select
If had_error Then
MsgBox "Error saving desktop style to registry.", _
vbOKOnly, "Registry Error"
End If
' Display the file.
FileLabel.Caption = file_name
m_CurrentFile = DirName & "\" & file_name
If UCase$(Right$(file_name, 4)) = ".BMP" Then
SystemParametersInfo SPI_SETDESKWALLPAPER, _
0, m_CurrentFile, SPIF_UPDATEINIFILE
Else
HiddenPict.Picture = LoadPicture(m_CurrentFile)
SavePicture HiddenPict.Picture, DirName & _
"\temp.bmp"
SystemParametersInfo SPI_SETDESKWALLPAPER, _
0, DirName & "\temp.bmp", _
SPIF_UPDATEINIFILE
End If
End Sub
单击“编辑”按钮时,程序将使用ShellExecute API函数编辑当前图片文件。
Private Sub cmdEdit_Click()
ShellExecute ByVal 0&, "edit", m_CurrentFile, _
vbNullString, vbNullString, SW_SHOWMAXIMIZED
End Sub
当您单击“删除”按钮时,程序会调用子程序DeleteFile将文件移动到废纸篓中。然后显示下一张图片。
Private Sub cmdDelete_Click()
' Delete the file.
DeleteFile m_CurrentFile, False
' Display the next file.
cmdNext_Click
End Sub
子程序DeleteFile使用SHFileOperation API函数将文件移动到废纸篓中,可选择让用户确认。
Public Sub DeleteFile(ByVal file_name As String, ByVal _
user_confirm As Boolean)
Dim op As SHFILEOPSTRUCT
With op
.wFunc = FO_DELETE
.pFrom = file_name
If user_confirm Then
' Make the user confirm.
.fFlags = FOF_ALLOWUNDO
Else
' Do not make the user confirm.
.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
End If
End With
SHFileOperation op
End Sub
取自here
答案 1 :(得分:1)
一个相当简单的方法是创建一个覆盖目录中单张照片的程序。然后获取Windows(在后台设置中)制作幻灯片,并从该目录每隔20秒选择一张随机照片。
答案 2 :(得分:0)
这样的事情,需要大约30秒来敲响winforms应用程序。 不是最好的解决方案,而是一个快速而肮脏的起点。
1)制作一个文件夹,例如C:/wallpaper
并告诉Windows使用幻灯片为您的背景使用该文件夹。
2)快速.NEt脚本下载最新图像
public bool running = true;
while(running){
string local= @"C:\wallpaper\localFile.jpg";
using(WebClient client = new WebClient())
{
client.DownloadFile("http://cam.sheratonamsterdamairportview.com/view_live1.jpg",
System.Threading.Thread.Sleep(20000); //Wait 20 seconds.
}
}
然后有一个按钮,当你想退出时,它会运行false。 Windows将始终显示在此处,并将在图像更改时更改 - 或者如果您使用该文件夹上的幻灯片显示,则应该更改。 (幻灯片放映是一种快速解决缓存问题而无需加载代码的方法) - 即使您没有该计算机的管理员权限,这也会有效。