Мы можем изменить размер (при необходимости) окно и сосредоточить его, но при этом на экране появляется вспышка моментов. Это не слишком очевидно, фактический результат - то, что вы ожидаете: HTA будет в центре экрана. Мы хотим, чтобы процесс был немного более гладким, но на данный момент мы должны использовать этот метод.
Ниже приведен код для примера HTA. (Чтобы реализовать этот процесс, скопируйте код, вставьте его в блокнот и сохраните файл с .hta в качестве расширения файла.) Мы обеспокоены (и единственной действительно полезной частью) - это подпрограмма Window_onload, которая работает автоматически, когда HTA загружается или обновляется:
Код заключается в следующем:
<html>
<голова>
<Title> центр HTA </title>
<HTA: Приложение
Id = "objhta"
ApplicationName = "Центр HTA"
Scroll = "Да"
SingleInstance = "Да"
>
</head>
<Script language = "vbscript">
Sub windows_onload
strcomputer = "."
Установить objwmiservice = getObject ("winmgmts: //" & strcomputer & "/root/cimv2")
Установить colitems = objwmiservice.execquery ("select * from win32_desktopmonitor")
Для каждого обаджитем в colitems
inthorizontal = objitem.screenwidth
intertical = objitem.screenHeight
Следующий
intleft = (inthorizontal - 800) / 2
inttop = (intertical - 600) / 2
Window.Resizeto 800 600
window.moveto intleft, inttop
Конец суб
</Script>
<body> </body>
</html>
После начала этой HTA - быстрое вспышка - окно будет отрегулировано на 800x600 пикселей и будет расположено в центре экрана.
Хороший вопрос: что здесь произойдет? Сначала мы используем какой -то стандартный код WMI для подключения к службе WMI на локальном компьютере, а затем запросим класс Win32_desktopmonitor.
Уведомление. Мы предполагаем, что на вашем компьютере подключен только один монитор. Если у вас есть несколько мониторов, вам придется добавить пункт, где вы убедитесь, что вы получите высоту и ширину экрана основного монитора.
После подключения к классу win32_desktopmonitor мы будем использовать следующие две строки кода для определения текущего размера экрана:
Код заключается в следующем:
inthorizontal = objitem.screenwidth
intertical = objitem.screenHeight
Заранее мы решили, что окно HTA составляет 800 пикселей в ширину и высоту 600 пикселей. Поэтому мы можем использовать следующий код, чтобы вычислить, где нам нужно разместить верхний левый угол окна:
Код заключается в следующем:
intleft = (inthorizontal - 800) / 2
inttop = (intertical - 600) / 2
Как вы можете видеть, мы получим ширину экрана (хранятся в интероризонтальной переменной) и вычитаем 800 пикселей (горизонтальное размер окна HTA). Предположим, у нас есть монитор с разрешением 1024x768. 1024 минус 800 и получить 224: Это говорит нам о том, насколько шире экран, чем окно HTA. Чтобы сосредоточиться на окне, нам просто нужно убедиться, что каждый край составляет 112 пикселей; Вот почему 224 (то есть интероризонтальный - 800) делится на 2.
Затем для высоты экрана повторите процесс. Для нашего примера отображается, мы получаем 768 - 600 (то есть 168), а затем делимся на 2, чтобы получить 84 пикселя (то есть размер верхних и нижних краев окна).
Таким образом, нам нужно выполнить еще две задачи. Сначала отрегулируйте окно до 800x600 пикселей: