Utilitário para alterar o plano de fundo da área de trabalho com base no endereço IP atual

3

Gostaria de ter um plano de fundo de área de trabalho diferente, dependendo da rede à qual estou conectado (em casa, no trabalho, em roaming, etc.).

Alguém sabe de uma maneira de fazer isso com o Windows Vista?

    
por RickMeasham 28.09.2014 / 15:42

4 respostas

3

Você não especifica o seu SO, então estou assumindo o Windows.

Eu tenho um script, gravado no VBSctipt, que é executado regularmente (através do recurso de tarefa agendada do Windows) e mudo o meu papel de parede para uma seleção aleatória, dependendo da hora do dia (então escolhe um da manhã) definido entre 0700 e 1000 e assim por diante). Depois de decidir usar a imagem, as seguintes linhas atualizam o papel de parede:

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

Você pode criar algo semelhante que baseie sua escolha apenas no intervalo de IPs em que você parece estar. Você pode detectar seu endereço público atual fazendo uma chamada HTTP para algo como link usando o Biblioteca WinHTTP (embora se você usar um serviço público como este, certifique-se de não fazer a consulta com muita freqüência). Como uma alternativa para detectar o seu endereço IP público, você poderia tentar escanear a saída de ipconfig ou detectar outras propriedades da rede (posso ver minha unidade de rede de arquivamento pornográfico? Se assim for devo estar em casa) e assim por diante. / p>

Você pode obter mais ajuda sobre isso no StackOverflow.
Não conheço nenhum utilitário pré-escrito que faça isso. Não há nenhuma dúvida de que alguns estão por aí, mas escrever seu próprio script pode ser mais rápido do que procurar por um pré-escrito que funcione do jeito que você quer.

    
por 06.08.2009 / 11:06
1

Confira este SU thread . Isso pode funcionar para você.

    
por 20.03.2017 / 11:16
0

Você pode criar um script que verifique seu endereço IP e altere seu plano de fundo.

Pena que minha experiência com scripts é tão baixa que eu não teria ideia de como escrever isso.

Aqui está um VBscript para encontrar o seu endereço 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

Agora eu preciso de um programador inteligente para adicionar algo para alterar seu plano de fundo, quando o IP tiver um determinado intervalo / valor.

    
por 06.08.2009 / 10:40
0

Apenas um ponto na [possivelmente] direção certa. Alguém pode postar uma nova resposta com a solução real ou editá-la se quiser.

Pelo que eu entendo, você vai querer ir por IP. Em casa, você terá um endereço IP que não é o mesmo do trabalho. Então, a primeira coisa que você precisa fazer é descobrir qual é o IP atual.

Eu encontrei este script em lote para fazer exatamente isso.

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%"

Agora que você tem o endereço IP, provavelmente precisará configurar uma declaração if.

A ação dos ifs será algo como o seguinte

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 

A desvantagem de executar isso como um arquivo em lote é que ele terá que ser configurado como uma tarefa agendada ou algo semelhante

    
por 06.08.2009 / 12:01