창을 크기를 조정하고 중앙에 크기를 조정할 수 있지만 그렇게하면 화면에 순간이 나타납니다. 이것은 명백하지 않습니다. 실제 결과는 당신이 기대하는 것입니다. HTA는 화면의 중앙에있을 것입니다. 우리는 프로세스가 조금 더 매끄럽기를 원하지만 현재이 방법을 사용해야합니다.
아래는 HTA 예제 코드입니다. (이 프로세스를 구현하려면 코드를 복사하고 메모장에 붙여 넣고 .hta로 파일을 파일 확장자로 저장하십시오.) 우리가 우려하는 부분 (그리고 유일하게 유용한 부분)은 window_onload 서브 루틴입니다. HTA가로드되거나 업데이트 될 때마다 자동으로 실행됩니다.
코드는 다음과 같습니다.
<html>
<헤드>
<title> 중앙 HTA </title>
<HTA : 응용 프로그램
id = "objhta"
ApplicationName = "Centered HTA"
스크롤 = "예"
SingleInstance = "예"
>
</head>
<script language = "vbscript">
서브 window_onload
strcomputer = "."
set objwmiservice = getObject ( "winmgmts : //"& strcomputer & "/root/cimv2")
colitems를 set colitems = objwmiservice.execquery ( "select * from win32_desktopmonitor")
콜리 템의 각 objitem에 대해
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
다음
intleft = (Inthorizontal -800) / 2
inttop = (intvertical -600) / 2
Window.Resizeto 800,600
Window.Moveto Intleft, Inttop
종료 서브
</스크립트>
<body> </body>
</html>
이 HTA (빠른 플래시)를 시작한 후 창은 800x600 픽셀로 조정되며 화면 중앙에 있습니다.
좋은 질문 : 여기서 무슨 일이 일어날까요? 먼저 일부 표준 WMI 코드를 사용하여 로컬 컴퓨터의 WMI 서비스에 연결 한 다음 Win32_DeskTopmonitor 클래스를 쿼리합니다.
알아채다. 컴퓨터에 모니터가 하나만 연결되어 있다고 가정합니다. 여러 모니터가있는 경우 메인 모니터의 화면 높이와 너비를 검색 할 수 있도록 Way 절을 추가해야합니다.
WIN32_DESKTOPMONITOR 클래스에 연결 한 후 다음 두 줄의 코드를 사용하여 현재 화면 크기를 결정합니다.
코드는 다음과 같습니다.
inthorizontal = objitem.screenwidth
intvertical = objitem.screenheight
우리는 HTA 창의 폭 800 픽셀, 높이 600 픽셀이라고 미리 결정했습니다. 따라서 다음 코드를 사용하여 창의 왼쪽 상단 모서리를 배치 해야하는 위치를 계산할 수 있습니다.
코드는 다음과 같습니다.
intleft = (Inthorizontal -800) / 2
inttop = (intvertical -600) / 2
보시다시피, 우리는 화면 너비를 얻고 (내부 변수에 저장) 800 픽셀 (HTA 창의 수평 치수)을 빼게됩니다. 해상도가 1024x768의 모니터가 있다고 가정합니다. 1024 마이너스 800 및 224를 얻으십시오 : 이것은 화면이 HTA 창보다 얼마나 넓은지를 알려줍니다. 창을 중앙에하려면 각 모서리가 112 픽셀인지 확인하면됩니다. 그렇기 때문에 224 (즉, 내부 - 800)를 2로 나눈 이유입니다.
그런 다음 화면 높이의 경우 프로세스를 반복하십시오. 이 예제 디스플레이의 경우 768 - 600 (즉, 168)을 얻은 다음 2로 나뉘어 84 픽셀 (즉, 창의 상단 및 하단 가장자리의 크기)을 얻습니다.
이런 식으로 두 가지 작업을 더해야합니다. 먼저 창을 800x600 픽셀로 조정하십시오.