Центрирование окна hta

Как центрировать окно HTA, чтобы оно находилось в центре экрана, независимо от разрешения экрана размера HTA. У меня есть это:

</head>
<script>
Sub DoResize 'Do not use Window_Onload
   window.resizeTo 800,600
   strComputer = "."
   Set objWMIService = GetObject("Winmgmts:\\" & strComputer & "\root\cimv2")
   Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
   For Each objItem in colItems
       intHorizontal = objItem.ScreenWidth
       intVertical = objItem.ScreenHeight
   Next
   intLeft = (intHorizontal - 800) / 2
   intTop = (intVertical - 600) / 2
   window.moveTo intLeft, intTop
End Sub
DoResize() 'Run the subroutine to position the containing window (your HTA dialog) before the body is rendered.
</script>
<body>

Но если я изменю разрешение экрана, это не сработает и изменит размер окна HTA.

Вопрос: Как переместить HTA в центр экрана независимо от размера HTA разрешения экрана.


person 09stephenb    schedule 10.03.2014    source источник


Ответы (2)


Использование WMI для этого немного излишне. Вместо этого вы можете использовать объект screen:

window.resizeTo (800, 600);
window.moveTo((screen.width - 800) / 2, (screen.height - 600) / 2);

Если вы хотите изменить размер окна при запуске, поместите приведенные выше строки в тег (JS) script в разделе head, даже перед тегом <hta: application>, или используйте код в обработчике событий или там, где он вам нужен.

Если вы хотите исключить высоту панели задач из области центрирования, вы можете использовать screen.availHeight вместо screen.height.

person Teemu    schedule 10.03.2014
comment
Однако это изменяет размер hta. - person 09stephenb; 11.03.2014
comment
Вы должны знать размер окна, вы не можете центрировать окно с неизвестным размером... - person Teemu; 11.03.2014

person    schedule
comment
Пожалуйста, добавьте объяснение того, как это решает вопрос. Например, где ошибка в коде. - person lepe; 27.02.2018
comment
Зачем изменять размер на какое-то другое значение, чем в вопросе? - person rollstuhlfahrer; 27.02.2018