1

私はすでにhttp://cam.sheratonamsterdamairportview.com/view_live1.jpgというリンクを持っています。このリンクは、20 秒ごとに写真を撮るスキポール空港のカメラにリンクしています。

デスクトップの背景として 20 秒ごとにこの写真を更新したいと思っています。それは可能ですか?

プログラムを作成する必要がありますか、それともトリックとリンクできますか? 私はWindows 7を実行しています。

4

3 に答える 3

2

Windows XP を使用している場合は、デスクトップにアクティブ コンテンツを追加するだけです。

デスクトップでマウスの右ボタン -> プロパティ -> デスクトップ タブ -> デスクトップのカスタマイズ -> Web タブ -> 新規 -> 場所 "www"

URL を設定し、コンテンツを有効にします。カメラからの画像を含む小さなデスクトップ ウィンドウが表示されます。自動的に更新されない場合は、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 コレクション内の名前ごとに 1 つのエントリを持つインデックスの配列を作成します。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

ここから撮影

于 2012-07-30T10:05:45.547 に答える
1

それを行うかなり簡単な方法は、ディレクトリ内の 1 つの写真を上書きするプログラムを作成することです。次に、Windows を (バックグラウンド設定で) スライドショーを作成し、そのディレクトリから 20 秒ごとにランダムな写真を選択します。

于 2012-07-30T10:03:04.783 に答える
0

このようなものはどうでしょうか。winforms アプリケーションを起動するのに約 30 秒かかります。最善の解決策ではありませんが、迅速で汚い出発点です。

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 は常にここを見て、画像が変更されると変更されます。または、そのフォルダでスライドショーを使用している場合は変更する必要があります。(スライド ショーは、コードをロードせずにキャッシュの問題を回避する簡単な方法です) - さらに、これはマシンの管理者権限を持っていなくても機能します。

于 2012-07-30T10:28:59.933 に答える