HTML Applications (HTA)
Overview
Microsoft's HTML Applications (HTA) can be used to create GUI's for modest VBscript applications.
HTA Fun Facts
- The HTML Application Host executable (mshta.exe) is part of the Windows OS.
- HTAs use the Trident (MSHTML) browser engine used by Internet Explorer (IE).
- HTAs are not dependent on the IE (unless you make ActiveX or related calls).
- If IE is removed the MSHTML engine remains and HTAs continues to work.
- HTAs work in Windows XP to Windows 11.
TOC
mshta.exe Paths
rem run32.bat %WinDir%\SysWOW64\mshta.exe c:\page.hta rem run64.bat %WinDir%\System32\mshta.exe c:\page.hta
Useful Links
HTA:
- VSEdit: Home | Examples | Support:
support@vbsedit.com - Hacking Around HTA's
- MS Docs
- robvanderwoude.com
- wikipedia
VBScript:
Shortcut Example
C:\Windows\System32\cmd.exe /c "C:\app\hta\MyApp.bat"
Launcher (MyApp.bat)
@echo off rem This line is useful when testing to clean up failed runs. Taskkill /IM mshta.exe /F rem Start App Minimized (resize from app) call start /min /b C:\app\hta\AyApp.hta exit
Windows 10 HTA Header
Gets around launching separate Browser window bug.
<!DOCTYPE HTML>
<html>
<head>
<title>MyApp</title>
<HTA:APPLICATION
APPLICATIONNAME="MyApp"
ICON="display.ico"
ID="this"
NAVIGABLE="yes"
SCROLL="no"
SINGLEINSTANCE="yes"
VERSION="2.1"
/>
</head>
<script language="VBScript">
Option Explicit
const NORMAL_WINDOW = 1
Sub Window_OnLoad
rem window.moveTo -2000,-2000
window.resizeTo 1024, 600
Call CenterWindow
document.title = document.title
window.focus
End Sub
sub Window_onUnload
window.close()
end sub
Sub CenterWindow()
Dim x, y
With Window.Screen
x = (.AvailWidth - 1024 ) \ 2
y = (.AvailHeight - 768 ) \ 2
End With
Window.MoveTo x, y
End Sub
</script>
</head>
<body>
...
File Exentions, Associate with HTA
Open below displayed cmd windows As Administrator. The extention .h42 used in these examples. Change as required for your environment.
Add Association
assoc .h42=mshta64 ftype .h42=%WinDir%\System32\mshta.exe %1
View Associations: Via Cmd
assoc > assoc.txt && notepad assoc.txt ftype > ftype.txt && notepad ftype.txt
View Associations: Via GUI
Windows Server: Windows-Key, then type: File Windows 10\11: Windows-Key, then type: File Type Associations
Then select displayed item to set default app for file type. Syntax can vary.
Delete Association
1. Run associated cmds for assoc & ftype:
assoc .h42=
ftype .h42=
Make sure there is a space after the equal signs.
2. Delete sub key from registry (ex: .h42):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
HKEY_CLASSES_ROOT
Re-login to take effect.