반응형

HTA는 HTML Application의 약자로 웹브라우저(익스플로러) 기반으로 스크립트 언어가 돌아가는 윈도우 프로그램(?)이다. 웹표준을 개나줘버리는 문제가 있지만 HTML과 JScript, VBS를 아무런 제약없이 사용할 수 있어서 쓰기에 따라 굉장히 유용할 수도 있음.

일반 브라우저(HTA의 기반이 되는 익스플로러 조차)는 보안 모델에 따라 파일입출력, 액티브컨트롤, 크로스도메인 등등이 제한되어 있지만(혹은 허용여부를 묻는 창이 뜬다던가) HTA는 이러한 제한이 모두 해제되어 있어 보안적으로 굉장히 취약하다. 뭐 그래서 사람들이 잘 안 쓰는 것 같다.

만드는 법은 간단하다. 그냥 평범한 HTML 문서를 만든 뒤 확장자만 hta로 바꿔주면 끝!

위에서 말한 것처럼 아무런 제약이 없기 때문에 크로스도메인도 마음껏 할 수 있다. 그리고 기본적으로 IE7로 렌더링되기 때문에 최신 웹표준은 대부분 지원하지 않는다. 대신 아래 코드를 head에 넣으면 최신 익스플로러로 렌더링하도록 지정할 수 있다. 다만 이 경우 후술할 "hta:application" 태그가 작동하지 않는다.

<meta http-equiv="x-ua-compatible" content="IE=edge">

이 외에 더 자세한 정보는 msdn을 참고하자. (영어) : https://msdn.microsoft.com/en-us/library/ms536496(v=vs.85).aspx

레퍼런스는 여기 : https://msdn.microsoft.com/en-us/library/ms536473(v=vs.85).aspx

코드) test.hta

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Hello, world!</title>
	</head>
	<body>
		<p>Hello, world!</p>
	</body>
</html>

결과)

HTA는 나름 애플리케이션만큼 애플리케이션을 제어할 수 있는 요소도 지원하고 있다.

<hta:application> 태그를 이용하는 건데 이 태그는 <haed> 태그 안에 위치하고 있으면 된다.

<hta:application
	ShowInTaskbar="no"
/>

이런 식으로 속성을 넣어주면 됨. 아래는 속성의 종류

applicationName=
singleInstance 속성이 yes로 설정되어 있을 경우 애플리케이션을 실행하기 전에 같은 애플리케이션의 이름이 있는지를 확인한 후 single 애플리케이션을 유지하게끔 할 경우 사용

border="thick"
thick: 기본값. 테두리를 이용해서 윈도우 사이즈 조절 가능
dialog: 다이얼로그 윈도우. 사이즈 조절 불가
none: 테두리 없음. 최대최소화 버튼도 사라짐
thin: 얇은 테두리라는데 dialog랑 동일한 듯

borderStyle="normal"
normal: 기본값
complex, raised, static, sunken의 옵션이 있는지 뭔 차이인지 모르겠음
border와의 차이는 border는 윈도우창의 테두리 속성을 지정하는 거고 borderStyle는 내부의 콘텐츠 테두리를 지정하는 거라고 함

caption="yes"
no로 지정하면 타이틀바가 사라짐. 자바스크립트(window.close)로 종료 가능

contextMenu="yes"
no로 지정하면 우클릭 메뉴가 뜨지 않음

icon=
작업표시줄과 창제목에 뜨는 아이콘 지정. ico 파일만 가능

innerBorder="yes"
기본적으로 내부가 살짝 패인 테두리를 하고 있는데 no로 지정하면 내부의 3d 테두리가 사라짐

maximizeButton="yes"
no로 지정하면 최대화 불가

minimizeButton="yes"
no로 지정하면 최소화 불가

navigable="no"
기본적으로 링크가 새 창으로 열리게 되는데 yes로 지정 시 현재 창에서 열림

scroll="yes"
no로 지정 시 스크롤바가 사라짐

scrollFlat="no"
yes로 지정하면 평평한 스크롤바가 된다는데 차이점이 없음

selection="yes"
no로 지정시 선택 불가. (즉, 드래그 불가) 마우스 우클릭도 안됨

showInTaskBar="yes"
no로 지정 시 작업표시줄에 표시되지 않음

singleInstance="no"
yes로 지정 시 하나만 실행이 가능. applicationName이 동일한 hta는 여러 개 띄울 수 없습니다. 따라서 ApplicationName 지정 필수

sysMenu="yes"
no로 지정 시 타이틀바에 있는 아이콘이 사라져서 시스템 메뉴를 띄울 수 없게 됩니다. 최대최소닫기 버튼도 같이 사라짐

version=
버전을 지정할 때 쓰고 자바스크립트 id를 지정해놓으면 불러올 수 있긴 한데 활용도는 딱히...

windowState="normal"
normal: 기본값. ie 기본 사이즈로 열림
minimize: 최소화 상태로 열림
maximize: 최대화 상태로 열림

더 자세한 건 msdn을 참고 : https://msdn.microsoft.com/en-us/library/ms536494(v=vs.85).aspx

반응형

+ Recent posts