Мне нужно реализовать обработчик событий для этого события NewCivicAddressReport объекта CivicFactory. Следующий код, использующий соглашение об именах обработчиков событий, отлично работает в VBScript:
Dim CivicFactory
Set CivicFactory = WScript.CreateObject("LocationDisp.CivicAddressReportFactory", "CivicFactory_")
Function CivicFactory_NewCivicAddressReport(report)
MsgBox "Location changed!"
End Function
Однако в PowerShell следующий код не работает:
$CivicFactory = new-object -comObject LocationDisp.CivicAddressReportFactory
Register-ObjectEvent $CivicFactory -EventName "NewCivicAddressReport" -Action ({ echo "hello" })
Сообщение об ошибке: Register-ObjectEvent: невозможно зарегистрироваться для события. Событие с именем NewCivicAddressReport не существует.
Я также пробовал $CivicFactory.add_NewCivicAddressRerport( {"hello"} )
, и это тоже не удалось.
Итак, я обратился к $CivicFactory | Get-Member
: он вернул свои методы и свойства, но НЕТ событий.
Поэтому я подозреваю, что PowerShell не очень хорошо поддерживает события COM. Я установил оснастку псевдонимов и попробовал Get-EventBinding CivicFactory -IncludeUnboundEvents | Format-Table -Auto
- ничего не вернуло, что означает, что система не верит, что у этого объекта есть события.
Так что теперь я сомневаюсь: возможно ли вообще привязать обработчик событий к объекту?
Кто-нибудь может показать мне правильный путь?