Я хотел бы иметь различный фон рабочего стола в зависимости от того, к какой сети я подключен (дома, на работе, в роуминге и т.д.).
Кто-нибудь знает способ сделать это с Windows Vista?
Я хотел бы иметь различный фон рабочего стола в зависимости от того, к какой сети я подключен (дома, на работе, в роуминге и т.д.).
Кто-нибудь знает способ сделать это с Windows Vista?
Вы не указываете свою ОС, поэтому я предполагаю, что 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
или Detech других свойств сети (я могу видеть мое порно архив сетевой диск? если так, то я должен быть дома) и так далее.
Вы можете получить дополнительную помощь по этому вопросу в StackOverflow.
Я не знаю ни одной заранее написанной утилиты, которая делает это. Несомненно, некоторые из них есть где-то, но написание собственного сценария может быть быстрее, чем поиск предварительно написанного сценария, который работает так, как вы хотите.
Проверьте эту ветку SU. Это может сработать для вас.
Просто точка в [возможно] правильном направлении. Кто-то может опубликовать новый ответ с фактическим решением или отредактировать его, если захотят.
Из того, что я понял, вы захотите перейти по 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
Недостаток использования этого как пакетного файла - это то, что он должен быть настроен как запланированное задание или что-то подобное
Вы можете создать скрипт, который проверяет ваш IP-адрес, а затем меняет фон.
Жаль, что мой опыт написания сценариев настолько низок, что я не знаю, как это написать.
Вот VBscript, чтобы найти ваш IP-адрес:
'GetIPaddr.vbs - Check the IP address you are currently
'connected to the Internet with (or LAN IP).
'© Bill James - bill@billsway.com
' 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 имеет определенный диапазон / значение.