Wir können das Fenster ändern (falls erforderlich) und es zentrieren, aber bei diesem Fall wird ein Blitz von Momenten auf dem Bildschirm angezeigt. Dies ist nicht allzu offensichtlich, das tatsächliche Ergebnis ist das, was Sie erwarten: Das HTA befindet sich in der Mitte des Bildschirms. Wir möchten, dass der Prozess etwas glatter ist, aber im Moment müssen wir diese Methode anwenden.
Unten finden Sie den Code für das HTA -Beispiel. (Um diesen Vorgang zu implementieren, kopieren Sie den Code, fügen Sie ihn in Notozier ein und speichern Sie die Datei mit .hta als Dateierweiterung.) Der Teil, über den wir besorgt sind (und der einzig wirklich nützliche Teil) ist die Fenster_onload -Unterroutine, die automatisch ausgeführt wird, wenn das HTA geladen oder aktualisiert wird:
Der Code ist wie folgt:
<html>
<kopf>
<title> zentriertes HTA </title>
<Hta: Anwendung
Id = "objhta"
ApplicationName = "zentriertes HTA"
Scroll = "Ja"
SingleInInstance = "Ja"
>
</head>
<Script Language = "vbscript">
Sub window_onload
strComputer = "."
Setzen Sie objwmiservice = getObject ("Winmgmts: //" & StrComputer & "/root/cimv2")
Setzen Sie ColItems = objwmiservice.execQuery ("Select * aus Win32_Desktopmonitor"))
Für jedes Objitem in Colitems
inthorizontal = objitem.screenwidth
intvertical = objitem.screenHeight
Nächste
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
Fenster.Resizeto 800.600
window.moveto intleft, inttop
Ende sub
</Script>
<body> </body>
</html>
Nach dem Start dieses HTA - ein kurzer Blitz - wird das Fenster auf 800 x 600 Pixel eingestellt und befindet sich in der Mitte des Bildschirms.
Gute Frage: Was wird hier passieren? Wir verwenden zuerst einen Standard -WMI -Code, um eine Verbindung zum WMI -Dienst auf dem lokalen Computer herzustellen, und fragen dann die Klasse Win32_Desktopmonitor an.
Beachten. Wir gehen davon aus, dass Ihr Computer nur einen Monitor angeschlossen hat. Wenn Sie mehrere Monitore haben, müssen Sie eine Where -Klausel hinzufügen, um sicherzustellen, dass Sie die Bildschirmhöhe und die Breite des Hauptmonitors abrufen.
Nachdem wir eine Verbindung zur Klasse Win32_Desktopmonitor hergestellt haben, verwenden wir die folgenden zwei Codezeilen, um die aktuelle Bildschirmgröße zu bestimmen:
Der Code ist wie folgt:
inthorizontal = objitem.screenwidth
intvertical = objitem.screenHeight
Wir haben im Voraus entschieden, dass das HTA -Fenster 800 Pixel in der Breite und 600 Pixel in Höhe ist. Daher können wir den folgenden Code verwenden, um zu berechnen, wo wir die obere linke Ecke des Fensters platzieren müssen:
Der Code ist wie folgt:
intleft = (inthorizontal - 800) / 2
inttop = (intvertical - 600) / 2
Wie Sie sehen können, erhalten wir die Bildschirmbreite (gespeichert in der inthorizontalen Variablen) und 800 Pixel (die horizontale Dimension des HTA -Fensters). Angenommen, wir haben einen Monitor mit einer Auflösung von 1024x768. 1024 minus 800 und erhalten Sie 224: Dies sagt uns, wie breiter der Bildschirm ist als das HTA -Fenster. Um das Fenster zu zentrieren, müssen wir nur sicherstellen, dass jede Kante 112 Pixel beträgt. Deshalb wird 224 (d. H. Inthorizontal - 800) durch 2 geteilt.
Wiederholen Sie dann für die Bildschirmhöhe den Vorgang. Für unsere Beispielanzeige erhalten wir 768 - 600 (d. H. 168) und dividieren dann um 2, um 84 Pixel zu erhalten (d. H. Die Größe der oberen und unteren Kanten des Fensters).
Auf diese Weise müssen wir zwei weitere Aufgaben erledigen. Stellen Sie zunächst das Fenster auf 800x600 Pixel ein: