none
Detectar resolução de vídeo e definir wallpaper RRS feed

  • 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

    segunda-feira, 6 de dezembro de 2010 19:46

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"
    segunda-feira, 6 de dezembro de 2010 22:17

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"
    segunda-feira, 6 de dezembro de 2010 22:17
  • 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, True

     Case "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, True

     Case "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, True

     End Select

    segunda-feira, 13 de dezembro de 2010 15:29
  • 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, True

     Case "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, True

     Case "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, True

     End 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"
    segunda-feira, 13 de dezembro de 2010 18:36
  • 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?

    terça-feira, 14 de dezembro de 2010 13:40
  • Marcellus, este script funciona tanto para sistemas Windows XP e Windows 7?

    Você salva ele como .bat?

     

     

    Obrigado.

    terça-feira, 22 de fevereiro de 2011 12:58
  • Sim, necessário verificar apenas o permissionamento do usuário que irá executar. 

     


    " Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"
    quarta-feira, 25 de janeiro de 2012 12:48