Usuário com melhor resposta
Detectar resolução de vídeo e definir wallpaper

Pergunta
-
Olá pessoal, tudo bem?
Estou precisando de uma grande ajuda, para montar o seguinte script:
Quando o usuário logar no micro, detectar a resolução de vídeo (800x600, 1024x768 ou 1280x1024) e definir um wallpaper de acordo com a resolução.
Eu encontrei alguns scripts aqui, mas ele defini uma resolução, e não detecta.
Poderiam me ajudar nessa empreita?
Obrigado.
Luidi
Respostas
-
Olá boa noite!
Veja esse exemplo...
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0) For Each objItem in colItems intHorizontal = objItem.ScreenWidth intVertical = objItem.ScreenHeight strRes = intHorizontal&"x"&intVertical Next wscript.echo "Resolução = "&strRes Select Case strRes Case "800x600" wscript.echo "Minha resolução é oitocentos por seiscentos" Case "1024x768" wscript.echo "Meu PC melhorou é miU e vinte e quatro por setecentos e sessenta e oito" Case "1200x800" wscript.echo "Issshhh comprei um notebook miU e duzentos por oitocentos" Case Else wscript.echo "Nenhuma das anteriores! Meu PC é um Alien!!" End Select
Agora é só você adicionar o comando para mudar o wallpaper! Tem alguns aqui no forum!
[]s!
" Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"- Marcado como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 11:30
Todas as Respostas
-
Olá boa noite!
Veja esse exemplo...
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0) For Each objItem in colItems intHorizontal = objItem.ScreenWidth intVertical = objItem.ScreenHeight strRes = intHorizontal&"x"&intVertical Next wscript.echo "Resolução = "&strRes Select Case strRes Case "800x600" wscript.echo "Minha resolução é oitocentos por seiscentos" Case "1024x768" wscript.echo "Meu PC melhorou é miU e vinte e quatro por setecentos e sessenta e oito" Case "1200x800" wscript.echo "Issshhh comprei um notebook miU e duzentos por oitocentos" Case Else wscript.echo "Nenhuma das anteriores! Meu PC é um Alien!!" End Select
Agora é só você adicionar o comando para mudar o wallpaper! Tem alguns aqui no forum!
[]s!
" Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"- Marcado como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 11:30
-
Bom dia.
Marcellus, desculpa pela demora em responder, com base em seu script, o script final ficou conforme abaixo.
O meu problema agora, é que o script só está funcionando manualmente, não funciona no logon script.
Poderiam me ajudar?
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2")
Set oShell = CreateObject("WScript.Shell")
Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0)
For Each objItem in colItems
intHorizontal = objItem.ScreenWidth
intVertical = objItem.ScreenHeight
strRes = intHorizontal&"x"&intVertical
Next
wscript.echo "Resolução = "&strRes
Select Case strRes
Case "800x600"
sWallPaper = "C:\Wallpaper\desktop1_800x600.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueCase "1024x768"
sWallPaper = "C:\Wallpaper\desktop1_1024x768.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueCase "1440x900"
sWallPaper = "C:\Wallpaper\desktop1_1440x900.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueEnd Select
-
Bom dia.
Marcellus, desculpa pela demora em responder, com base em seu script, o script final ficou conforme abaixo.
O meu problema agora, é que o script só está funcionando manualmente, não funciona no logon script.
Poderiam me ajudar?
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2")
Set oShell = CreateObject("WScript.Shell")
Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0)
For Each objItem in colItems
intHorizontal = objItem.ScreenWidth
intVertical = objItem.ScreenHeight
strRes = intHorizontal&"x"&intVertical
Next
wscript.echo "Resolução = "&strRes
Select Case strRes
Case "800x600"
sWallPaper = "C:\Wallpaper\desktop1_800x600.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueCase "1024x768"
sWallPaper = "C:\Wallpaper\desktop1_1024x768.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueCase "1440x900"
sWallPaper = "C:\Wallpaper\desktop1_1440x900.jpg "' update in registry
oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper' let the system know about the change
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, TrueEnd Select
Você tentou colocar por GPO e não executou? Coloque no final do script um wscript.echo e veja se irá aparecer a mensagem na tela.
wscript.echo "Script Finalizado"
Deverá aparecer......se caso não apareça, será ecessário rever as configurações da GPO.
Estamos no aguardo! []'s,
" Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda" -
Olá bom dia Marcellus.
O problema a princípio era no script mesmo.
Aqui temos um scrip.bat default que chama outro script.bat (Que vai copiar os papéis de parede pro desktop) e em seguida chamar o script.vbs, assim "cscript script.vbs"
Ao chamar o script.bat eu adicionei o comando "call script.bat" e funcionou, agora está executando. Antes estava "start script.bat" e não funcionava.
Além desse script, que detecta a resolução e definir o papel de parede, habilitamos aqui a opção de não alterar o papel de parede, porém por GPO. Foi habilitado na OU dos logins, e a GPO a diretiva foi para usuário.
Mas percebi que em algumas máquinas não aplica essa diretiva, mesmo forçando a política (Executando o gpupdate /force). Por precaução no script default, após chamar o script.bat, adicionei o comando gpupdate /force.
O problema agora é que em algumas máquinas funciona e em outras não funciona, bloquear a opção de alterar o papel de parede.
Poderiam ajudar?
-
-