Podemos cambiar el tamaño (si es necesario) la ventana y centrarla, pero al hacerlo, aparece un destello de momentos en la pantalla. Esto no es demasiado obvio, el resultado real es lo que espera: el HTA estará en el centro de la pantalla. Queremos que el proceso sea un poco más suave, pero por el momento tenemos que usar este método.
A continuación se muestra el código para el ejemplo HTA. (Para implementar este proceso, copie el código, péguelo en el bloc de notas y guarde el archivo con .hta como extensión del archivo). La parte que nos preocupa (y la única parte realmente útil) es la subrutina Window_onLoad, que se ejecuta automáticamente cada vez que el HTA se carga o actualiza:
El código es el siguiente:
<html>
<Evista>
<title> HTA centrado </title>
<HTA: aplicación
Id = "objhta"
ApplicationName = "HTA centrado"
Scroll = "Sí"
SingleInstance = "Sí"
>
</ablo>
<Script language = "VBScript">
Sub Window_onload
strcomputer = "."
Establecer objwmiservice = getObject ("winmgmts: //" & strcomputer & "/root/cimv2")
Establecer colitems = objwmiservice.execquery ("Seleccione * de Win32_DeskTopMonitor")
Para cada objitem en colitems
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
Próximo
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
ventana.resizeto 800,600
Window.moveto intleft, inttop
Final
</script>
<body> </body>
</html>
Después de comenzar este HTA, un flash rápido, la ventana se ajustará a 800x600 píxeles y se ubicará en el centro de la pantalla.
Buena pregunta: ¿Qué va a pasar aquí? Primero usamos un código WMI estándar para conectarnos al servicio WMI en la computadora local, y luego consultamos la clase Win32_DeskTopMonitor.
Aviso. Asumimos que su computadora solo tiene un monitor conectado. Si tiene múltiples monitores, deberá agregar una cláusula Where para asegurarse de recuperar la altura y el ancho del monitor principal.
Después de conectarnos a la clase win32_desktopmonitor, utilizaremos las siguientes dos líneas de código para determinar el tamaño actual de la pantalla:
El código es el siguiente:
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
Hemos decidido de antemano que la ventana HTA tiene 800 píxeles de ancho y 600 píxeles de altura. Por lo tanto, podemos usar el siguiente código para calcular dónde necesitamos colocar la esquina superior izquierda de la ventana:
El código es el siguiente:
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
Como puede ver, obtendremos el ancho de la pantalla (almacenado en la variable interizontal) y reste 800 píxeles (la dimensión horizontal de la ventana HTA). Supongamos que tenemos un monitor con una resolución de 1024x768. 1024 menos 800 y obtener 224: Esto nos dice cuán más amplia es la pantalla que la ventana HTA. Para centrar la ventana, solo necesitamos asegurarnos de que cada borde sea de 112 píxeles; Es por eso que 224 (es decir, Inthorizontal - 800) se divide por 2.
Luego, para la altura de la pantalla, repita el proceso. Para nuestra pantalla de ejemplo, obtenemos 768 - 600 (es decir, 168), y luego dividimos por 2 para obtener 84 píxeles (es decir, el tamaño de los bordes superiores e inferiores de la ventana).
De esta manera, necesitamos hacer dos tareas más. Primero, ajuste la ventana a 800x600 píxeles: