1

我已经有一个链接http://cam.sheratonamsterdamairportview.com/view_live1.jpg。此链接链接到史基浦机场的相机,每 20 秒拍摄一张照片。

我真的很想每 20 秒更新一次这张照片作为我的桌面背景。那可能吗?

我需要制作程序还是可以将其与技巧联系起来?我正在运行 Windows 7 顺便说一句。

4

3 回答 3

2

如果您使用的是 Windows XP,您可以简单地在桌面上添加活动内容。

桌面上的鼠标右键 -> 属性 -> 桌面选项卡 -> 自定义桌面 -> Web 选项卡 -> 新建 -> 位置“www”

设置您的 URL 并激活内容。您将有一个小的桌面窗口,其中包含来自相机的图片。如果它不会自动刷新,则创建一个简单的页面,在 20 秒后使用元刷新和 img 标签,并为您的链接设置 src 属性。

我不确定以上是否适用于 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

当您单击 Delete 按钮时,程序调用子例程 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

取自这里

于 2012-07-30T10:05:45.547 回答
1

一个相当简单的方法是创建一个程序来覆盖目录中的单张照片。然后让 Windows(在后台设置中)制作幻灯片,并从该目录中每 20 秒随机选择一张照片。

于 2012-07-30T10:03:04.783 回答
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.
}

}

然后有一个按钮,当你想退出时会运行假。Windows 将始终在此处查看,并且会在图像更改时更改 - 或者如果您在该文件夹上使用幻灯片,则应该这样做。(幻灯片是一种无需大量代码即可快速解决缓存问题的方法) - 此外,即使您没有机器的管理员权限,这也可以工作。

于 2012-07-30T10:28:59.933 回答