Nous pouvons redimensionner (si nécessaire) la fenêtre et la centrer, mais en le faisant, un éclair de moments apparaît à l'écran. Ce n'est pas trop évident, le résultat réel est ce que vous attendez: le HTA sera au centre de l'écran. Nous voulons que le processus soit un peu plus fluide, mais pour le moment, nous devons utiliser cette méthode.
Vous trouverez ci-dessous le code de l'exemple HTA. (Pour implémenter ce processus, copiez le code, collez-le dans le bloc-notes et enregistrez le fichier avec .hta comme extension de fichier.) La partie qui nous concerne (et la seule pièce vraiment utile) est le sous-programme Window_onload, qui s'exécute automatiquement chaque fois que le HTA est chargé ou mis à jour:
Le code est le suivant:
<html>
<adal>
<Title> HTA centré </TITME>
<HTA: application
Id = "objhta"
ApplicationName = "HTA centrée"
Scroll = "oui"
Singleinstance = "Oui"
>
</ head>
<Script linguisse = "vbscript">
Sub window_onload
strComputer = "."
SET OBJWMISERVICE = GetObject ("WinMgmts: //" & StrComputer & "/ Root / Cimv2")
SET COLITEMS = objwMiService.ExecQuery ("SELECT * FROM WIN32_DESKTOPMONITOR")
Pour chaque objitem en colitems
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
Suivant
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
Window.Resizeto 800,600
window.moveto intleft, inttop
Sub-Sub
</cript>
<body> </body>
</html>
Après avoir démarré ce HTA - un flash rapide - la fenêtre sera ajustée à 800x600 pixels et sera située au centre de l'écran.
Bonne question: que va-t-il se passer ici? Nous utilisons d'abord un code WMI standard pour nous connecter au service WMI sur l'ordinateur local, puis interrogeant la classe WIN32_DESKTOPMONITOR.
Avis. Nous supposons que votre ordinateur n'a qu'un seul moniteur connecté. Si vous avez plusieurs moniteurs, vous devrez ajouter une clause WHERE pour vous assurer que vous récupérerez la hauteur de l'écran et la largeur du moniteur principal.
Après avoir été connecté à la classe WIN32_DESKTOPMONITOR, nous utiliserons les deux lignes de code suivantes pour déterminer la taille actuelle de l'écran:
Le code est le suivant:
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
Nous avons décidé à l'avance que la fenêtre HTA était de 800 pixels de largeur et 600 pixels de hauteur. Par conséquent, nous pouvons utiliser le code suivant pour calculer où nous devons placer le coin supérieur gauche de la fenêtre:
Le code est le suivant:
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
Comme vous pouvez le voir, nous obtiendrons la largeur de l'écran (stocké dans la variable inthorizontale) et soustrayons 800 pixels (la dimension horizontale de la fenêtre HTA). Supposons que nous ayons un moniteur avec une résolution de 1024x768. 1024 MINUS 800 et obtenez 224: Cela nous indique à quel point l'écran est large que la fenêtre HTA. Pour centrer la fenêtre, nous devons nous assurer que chaque bord est de 112 pixels; C'est pourquoi 224 (c'est-à-dire inthorizontal - 800) est divisé par 2.
Ensuite, pour la hauteur de l'écran, répétez le processus. Pour notre exemple d'affichage, nous obtenons 768 - 600 (c'est-à-dire 168), puis divisez par 2 pour obtenir 84 pixels (c'est-à-dire la taille des bords supérieur et inférieur de la fenêtre).
De cette façon, nous devons effectuer deux autres tâches. Tout d'abord, ajustez la fenêtre à 800x600 pixels: