Это сработало сейчас. Не работал из-за подъема. После исправления ничего не произошло, но execScript решил это, как вы написали в другом комментарии.

я могу написать обработчики событий следующим образом:

var wdApp = new Microsoft.Office.Interop.Word.Application();
wdApp.DocumentBeforeSave += (Document doc, ref bool saveAsUI, ref bool cancel) => {
   //do stuff here
};

В VBA / VB6 я могу использовать статическую обработку событий:

Dim WithEvents wdApp As Word.Application

Private Sub wdApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    'do stuff here
End Sub

Я бы предпочел использовать динамическую обработку событий. Однако в Javascript даже при использовании статической обработки событий с описанным синтаксисомВот:

var wdApp = new ActiveXObject('Word.Application');
wdApp.Visible = true;

function wdApp::Quit() {
    window.alert('Quit');
};

это терпит неудачу:

0x800a138f - Ошибка времени выполнения JavaScript: ожидается объект

Кроме того, статическая обработка событий является опцией в VBA / VB6, потому что объявления могут быть помеченыPrivate, Однако в Javascript и переменная, и обработчик должны быть объявлены в глобальной области видимости.

Два вопроса:

Как я могу обрабатывать события объектов, созданных Automation, с помощью Javascript в среде HTA? (Примечание: я знаю, что в WSH это возможно с использованием префикса, переданногоCreateObjectи функция с именемwdApp_Quit, но я ищу решение HTA.)

Как я могу сделать это, не загрязняя глобальный охват?

Есть более старый вопросВот.

Ответы на вопрос(2)

Ваш ответ на вопрос