根据当前 IP 地址更改桌面背景的实用程序

根据当前 IP 地址更改桌面背景的实用程序

我希望根据我所连接的网络(家庭、工作、漫游等)拥有不同的桌面背景。

有谁知道如何使用 Windows Vista 实现这一点?

答案1

您没有指定您的操作系统,因此我假设是 Windows。

我有一个用 VBSctipt 编写的脚本,它定期运行(通过 Windows 内置的计划任务功能),并根据一天中的时间将我的壁纸更改为随机选择(因此它会从 0700 到 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 范围进行选择。您可以通过对以下内容进行 HTTP 调用来检测您当前的公共地址:http://whatismyipaddress.com/使用WinHTTP 库(不过,如果您使用这样的公共服务,请确保不要过于频繁地进行查找)。作为检测公共 IP 地址的替代方法,您可以尝试扫描网络的输出ipconfig或检测网络的其他属性(我可以查看我的色情档案网络驱动器吗?如果可以,我肯定在家)等等。

您可能会在 StackOverflow 上获得更多帮助。
我不知道有任何预先编写的实用程序可以做到这一点。毫无疑问,有些地方确实有一些,但编写自己的脚本可能比搜索按您想要的方式工作的预先编写的脚本更快。

答案2

看看这个SU 螺纹.这可能对你有用。

答案3

您可以创建一个脚本来检查您的 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 具有一定的范围/值时,让它改变你的背景。

答案4

这只是指向 [可能] 正确方向的一点。有人可以发布一个包含实际解决方案的新答案,或者如果他们愿意的话,可以编辑这个答案。

据我所知,您将需要通过 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 

将其作为批处理文件运行的缺点是必须将其设置为计划任务或类似任务

相关内容