Тема: Реестр: Перетаскивание файлов и папок на значок HTA-приложения
HTA позволяют при вызове указывать аргументы, однако передать в качестве аргумента пути к файлам и папкам перетащив их в Проводнике на значок приложения нельзя.
Чтобы исправить это упущение, можно использовать соответствующее расширение оболочки для сценариев WSH:
REGEDIT4
[HKEY_CLASSES_ROOT\htafile\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
Можно также использовать расширение оболочки для .exe, .com, .bat, ... файлов:
REGEDIT4
[HKEY_CLASSES_ROOT\htafile\shellex\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"
но в этом случае пути передаются в коротком (8.3) формате. Предполагаю, что это происходит потому, что hta-файл не имеет расширения ".bat" или ".cmd" и не является 32-разрядным Windows-приложением.
Если нет желания вносить изменения в реестр, то для решения задачи для отдельно взятого hta-приложения можно создать ярлык на mshta.exe указав в качестве аргумента полный путь к hta-файлу (в кавычках, если он содержит пробелы) и выполнять перетаскивание на этот ярлык. Кстати, в этом случае можно использовать расширение отличное от ".hta".
Простой пример для тестирования:
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<HTA:APPLICATION id='App'/>
</HEAD>
<BODY>
<PRE>
Командная строка:
<STRONG><SCRIPT language='JavaScript'>
document.write(App.commandLine);
</SCRIPT></STRONG>
Рабочая папка:
<STRONG><SCRIPT language='JavaScript'>
document.write(
(new ActiveXObject("WScript.Shell")).CurrentDirectory
);
</SCRIPT></STRONG></PRE>
</BODY></HTML>