COM обработчик событий в VBScript - PullRequest
3 голосов
/ 28 апреля 2011

Я хочу перехватить событие NewCivicAddressReport, что означает, что мне нужно реализовать обработчик события.Может кто-нибудь объяснить, почему код VBScript, встроенный в html-страницу, работает, а VBS-файл не работает?

Вот html-страница, где события NewCivicAddressReport могут обрабатываться в функции CivicFactory_NewCivicAddressReport ().Я полагаю, это из-за соглашения об именах обработчиков событий.Поправьте меня если я ошибаюсь.

    <!-- Civic address Location report factory object -->
    <object id="CivicFactory" 
        classid="clsid:2A11F42C-3E81-4ad4-9CBE-45579D89671A"
        type="application/x-oleobject">
    </object>                 

    <script language="vbscript">

    Function CivicFactory_NewCivicAddressReport(report)
        MsgBox "New civic address report!"
    End Function

    Sub OnLoadPage()
        CivicFactory.ListenForReports(1000)
    End Sub

    Sub DisplayStatus(status)
        MsgBox "status displayed"
    End Sub

    </script>

А ниже файл VBS, который не работает - кажется, что функция обработчика событий никогда не вызывается.

Dim CivicFactory
Set CivicFactory = WScript.CreateObject("LocationDisp.CivicAddressReportFactory")

Function CivicFactory_NewCivicAddressReport(report)
    MsgBox "Location changed!"
    keepSleeping=false
End Function

CivicFactory.ListenForReports(1000)

dim keepSleeping
keepSleeping=true
while keepSleeping
    WScript.Sleep 200
wend

Кстати, можнокто-нибудь подскажет разницу между двумя способами создания объекта: и WScript.CreateObject ()?

Заранее спасибо!

1 Ответ

4 голосов
/ 28 апреля 2011

Второй аргумент для WScript.CreateObject - это префикс, используемый в ваших функциях обработки событий. Чтобы это сработало, измените ваш вызов CreateObject на следующий.

Set CivicFactory = _
    WScript.CreateObject("LocationDisp.CivicAddressReportFactory", _
        "CivicFactory_")

Разница между WScript.CreateObject и CreateObject заключается в том, что WScript.CreateObject поддерживает события.

...