Altere o local da barra de tarefas do Windows 7 automaticamente com base na forma da tela ou no status de encaixe

1

Meu laptop tem um widescreen de 14 ": bastante largo, mas não muito alto. Acho mais conveniente ter a barra de tarefas do Windows localizada à esquerda da tela, já que posso poupar a largura, mas não o espaço vertical.

No entanto, quando no escritório, meu computador fica em uma estação de encaixe e é conectado a uma tela grande e quadrada. Aqui, prefiro muito mais ter a barra de tarefas em sua localização padrão, ou seja, na parte inferior.

Eu sei como alternar entre os dois locais da barra de tarefas manualmente nas Propriedades da Barra de Tarefas, é claro. Mas eu faço isso algumas vezes por dia, o que é bastante irritante. Minha pergunta é: posso alterar automaticamente a localização da barra de tarefas?

Por exemplo, na inicialização (ou acordar da hibernação), um script é executado, o que detecta:

  • A forma da tela é maior que 4: 3? (ou qualquer outro número)
  • O computador está encaixado na estação de encaixe?

Se sim, coloque a barra de tarefas na parte inferior, senão à esquerda.

Alguém sabe como fazer isso ou pode me colocar no caminho certo? Ou já existe um utilitário que pode fazer isso?

    
por Jean-François Corbett 05.09.2012 / 09:25

1 resposta

0

HKEY_CURRENT_USER = &H80000001
Set WshShell = CreateObject("WScript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set ObjRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")

'Get curr. user name
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
For Each objItem in colItems
  strCurrentUserName = objItem.UserName
Next

Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor",,48)
For Each objItem in colItems
  intHorizontal = objItem.ScreenWidth
  intVertical = objItem.ScreenHeight 
Next 

bottom = Array(&H28,&H00,&H00,&H00,&Hff,&Hff,&Hff,&Hff,&H02,&H00,&H00,&H00,&H03,&H00,&H00,&H00,&H3e,&H00,&H00,&H00,&H2e,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H82,&H04,&H00,&H00,&H80,&H07,&H00,&H00,&Hb0,&H04,&H00,&H00)
left_   = Array(&H28,&H00,&H00,&H00,&Hff,&Hff,&Hff,&Hff,&H02,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H3e,&H00,&H00,&H00,&H2e,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H3e,&H00,&H00,&H00,&Hb0,&H04,&H00,&H00)

if intVertical >= 800 then
  regdata = bottom
 else
  regdata = left_
    end if

ObjRegistry.SetBinaryValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2\", "Settings", regdata

'Restart user shell
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'Explorer.exe'")
For Each objProcess in colProcessList
    colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)


If strUserDomain & "\" & strNameOfUser = strCurrentUserName then
      objProcess.Terminate()
end if

Próximo

    
por 28.02.2013 / 15:00