Podemos redimensionar (se necessário) a janela e centralizá -la, mas ao fazê -lo, um flash de momentos aparece na tela. Isso não é muito óbvio, o resultado real é o que você espera: o HTA estará no centro da tela. Queremos que o processo seja um pouco mais suave, mas, no momento, temos que usar esse método.
Abaixo está o código do exemplo HTA. (Para implementar esse processo, copie o código, coloque -o no bloco de notas e salve o arquivo com .hta como a extensão do arquivo.) A parte com a qual estamos preocupados (e a única parte realmente útil) é a sub -rotina window_onload, que é executada automaticamente sempre que o HTA é carregado ou atualizado:
O código é o seguinte:
<html>
<head>
<title> HTA centralizado </title>
<HTA: Aplicação
Id = "objhta"
ApplicationName = "HTA centrada"
Scroll = "sim"
SingleInstance = "Sim"
>
</head>
<Script Language = "VBScript">
Sub Window_onLoad
strComputer = "."
Definir objwmiservice = getObject ("winmgmts: //" & strcomputer & "root/cimv2")
SET COLITEMS = objwmiservice.execQuery ("Selecione * FROM WIN32_DESKTOPMONITOR")
Para cada objitem em colitems
inthorizontal = objitem.screenwidth
Intvertical = objitem.screenHeight
Próximo
intleft = (INTHORIZONTAL - 800) / 2
inttop = (Intvertical - 600) / 2
Window.Resizeto 800.600
Window.moveto Intleft, inttop
Final sub
</Script>
<Body> </body>
</html>
Depois de iniciar este HTA - um flash rápido - a janela será ajustada para 800x600 pixels e estará localizada no centro da tela.
Boa pergunta: o que vai acontecer aqui? Primeiro, usamos algum código WMI padrão para conectar -se ao serviço WMI no computador local e, em seguida, consultamos a classe Win32_DeskTopMonitor.
Perceber. Assumimos que seu computador possui apenas um monitor conectado. Se você tiver vários monitores, precisará adicionar uma cláusula WHERE para garantir que recuperará a altura e a largura da tela do monitor principal.
Depois de conectar -se à classe Win32_DeskTopMonitor, usaremos as duas linhas de código a seguir para determinar o tamanho da tela atual:
O código é o seguinte:
inthorizontal = objitem.screenwidth
Intvertical = objitem.screenHeight
Decidimos antecipadamente que a janela HTA tem 800 pixels de largura e 600 pixels de altura. Portanto, podemos usar o seguinte código para calcular onde precisamos colocar o canto superior esquerdo da janela:
O código é o seguinte:
intleft = (INTHORIZONTAL - 800) / 2
inttop = (Intvertical - 600) / 2
Como você pode ver, obteremos a largura da tela (armazenada na variável INDORIZONTAL) e subtrairemos 800 pixels (a dimensão horizontal da janela HTA). Suponha que tenhamos um monitor com uma resolução de 1024x768. 1024 Minus 800 e Get 224: Isso nos diz o quão larga a tela é do que a janela HTA. Para centralizar a janela, precisamos apenas garantir que cada borda seja de 112 pixels; É por isso que 224 (ou seja, INDORIZONTAL - 800) é dividido por 2.
Em seguida, para altura da tela, repita o processo. Para nossa exibição de exemplo, obtemos 768 - 600 (ou seja, 168) e depois dividimos por 2 para obter 84 pixels (ou seja, o tamanho das bordas superior e inferior da janela).
Dessa forma, precisamos realizar mais duas tarefas. Primeiro, ajuste a janela para 800x600 pixels: