Подавление закрытия окна HTA-приложения

08.02.2014

В некоторых сценариях интерфейса может понадобится запретить закрывать HTA-приложение средствами операционной системы: кнопкой заголовка окна "Закрыть", контекстным меню заголовка окна и сочетанием ALT+F4.

Чтобы убрать кнопки и контекстноем меню HTA-приложения, нужно в заголовке формы выставить следующие параметры:

<hta:application
   ...
   Border = "Dialog"
   Caption = "Yes"
   ContextMenu = "No"
   InnerBorder = "No"
   MaximizeButton = "No"
   MinimizeButton = "No"
   Scroll = "No"
   Selection = "No"
   SingleInstance = "Yes"
   SysMenu = "No"
   WindowState = "normal"
   ...
/>

Чтобы подавить нажатие ALT+F4, нужно

а) к телу формы назначить отслеживание события нажатия кнопки:

<body onkeydown="KeyDown(window.event)" >
   ...
</body>

б) выполнять следующий VBS-скрипт каждый раз при нажатии клавиши:

Function KeyDown(mEvent)
 if (mEvent.keyCode = 116 Or mEvent.keyCode =27 Or (mEvent.altKey and mEvent.keyCode=115)) Then
   window.event.returnValue = false
   window.event.keyCode = 0
 end If
End Function

Данный метот подавления закрытия формы используется в проекте терминала самообслуживания клиентов по этой ссылке.