webdevqa.jp.net

現在のIPアドレスに基づいてデスクトップの背景を変更するユーティリティ

接続しているネットワーク(自宅、職場、ローミングなど)に応じて、デスクトップの背景を変えたいのですが。

Windows Vistaでこれを実現する方法を知っている人はいますか?

3
RickMeasham

OSを指定していないので、Windowsを想定しています。

VBSctiptで一緒にノックされたスクリプトがあり、定期的に実行され(Windowsの組み込みのスケジュールされたタスク機能を介して)、時間帯に応じて壁紙がランダムに選択されます(したがって、0700の間に設定された「朝」から1つを選択します)および1000など)。使用する画像が決まったら、次の行で壁紙を更新します。

Set oShell = WScript.CreateObject("Wscript.Shell")
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sImage
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, False

使用しているように見えるIP範囲のみに基づいて選択する類似のものを作成できます。 WinHTTPライブラリ を使用して http://whatismyipaddress.com/ のようなものにHTTP呼び出しを行うことで、現在のパブリックアドレスを検出できます(ただし、次のようなパブリックサービスを使用する場合これは、ルックアップを頻繁に行わないようにしてください)。パブリックIPアドレスを検出する代わりに、ipconfigの出力をスキャンするか、ネットワークの他のプロパティをデテックすることができます(ポルノアーカイブネットワークドライブを見ることができますか?もしそうなら、私は家にいる必要があります)。オン。

StackOverflowでこれについてもっと助けを得るかもしれません。
これを行う事前に作成されたユーティリティを知りません。間違いなくそこにあるものもありますが、独自のスクリプトを作成する方が、希望どおりに機能する事前に作成されたスクリプトを検索するよりも速い場合があります。

3
David Spillett

これをチェックしてください SUスレッド 。それはあなたのために働くかもしれません。

1
JP Alioto

[おそらく]正しい方向へのポイント。誰かが実際の解決策で新しい答えを投稿するか、必要に応じてこれを編集することができます。

私が集めたものから、あなたはIPで行きたいと思うでしょう。自宅では、職場のIPアドレスとは異なるIPアドレスを使用します。したがって、最初に行う必要があるのは、現在のIPが何であるかを調べることです。

私はこのバッチスクリプトがまさにそれを行うことを発見しました。

http://www.computing.net/answers/programming/batch-file-finding-the-ip-address/13900.html

IPCONFIG |FIND "IP" > %temp%\TEMPIP.txt
FOR /F "tokens=2 delims=:" %%a in (%temp%\TEMPIP.txt) do set IP=%%a
del %temp%\TEMPIP.txt
set IP=%IP:~1%
echo %IP% >%temp%\ip.txt
echo The current IP address is "%IP%"

IPアドレスを取得したので、おそらくifステートメントを設定する必要があります。

Ifのアクションは次のようになります

http://www.computing.net/answers/programming/batch-to-change-desktop-wallpaper/15105.html

reg /add HKCU\Control Panel\Desktop\WallPaper /v wallpaper /t REG_SZ /d c:\images\wallpaper.bmp 

これをバッチファイルとして実行することの欠点は、スケジュールされたタスクまたは同様のものとして設定する必要があることです。

0
Ciaran

IPアドレスをチェックしてから、バックグラウンドを変更するスクリプトを作成できます。

スクリプトの経験があまりにも少ないので、これをどのように書くのかわかりません。

これがVBscriptです IPアドレスを見つけるには:

'GetIPaddr.vbs - Check the IP address you are currently
'connected to the Internet with (or LAN IP).
'© Bill James - [email protected]
' rev 15 Jan 2002
'   Now works with Windows NT, 2K, XP

Option Explicit
Dim IP_Address : IP_Address = GetIP()

If IP_Address = "0.0.0.0" OR IP_Address = "" Then
  MsgBox "No IP Address found."
Else
  InputBox vbcrlf & "Current IP Address is " &  IP_Address & _
           vbcrlf & vbcrlf & vbcrlf & vbcrlf & _
           "(Use Ctrl + C to copy IP Address to Clipboard)", _
           "GetIPaddr.vbs © Bill James", IP_Address
End If

Function GetIP()
  Dim ws : Set ws = CreateObject("WScript.Shell")
  Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
  Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt"
  Dim ThisLine, IP
  If ws.Environment("SYSTEM")("OS") = "" Then
    ws.run "winipcfg /batch " & TmpFile, 0, True
  Else
    ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True
  End If
  With fso.GetFile(TmpFile).OpenAsTextStream
    Do While NOT .AtEndOfStream
      ThisLine = .ReadLine
      If InStr(ThisLine, "Address") <> 0 Then IP = Mid(ThisLine, InStr(ThisLine, ":") + 2)
    Loop
    .Close
  End With
  'WinXP (NT? 2K?) leaves a carriage return at the end of line
  If IP <> "" Then
    If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1)
  End If
  GetIP = IP
  fso.GetFile(TmpFile).Delete  
  Set fso = Nothing
  Set ws = Nothing
End Function

IPに特定の範囲/値がある場合、バックグラウンドを変更するために何かを追加するスマートプログラマーが必要です。

0
Ivo Flipse