Мне нужно реализовать обработчик событий для этого события 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.Я установил pseventing snapin и попробовал Get-EventBinding CivicFactory -IncludeUnboundEvents | Format-Table -Auto
- он ничего не возвратил, что означает, что система не верит, что у этого объекта есть события.
Так что теперь я сомневаюсь: можно ли вообще связать событиеобработчик объекта?
Может кто-нибудь показать мне правильный путь?