Это сработало сейчас. Не работал из-за подъема. После исправления ничего не произошло, но 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.)
Как я могу сделать это, не загрязняя глобальный охват?
Есть более старый вопросВот.