【问题标题】:Event Capture in classic ASP (vbscript) - is this possible?经典 ASP (vbscript) 中的事件捕获 - 这可能吗?
【发布时间】:2010-07-20 09:23:39
【问题描述】:

我们刚刚购买了一些软件,它为我们的电话系统提供了一个 API,允许我们拨号、挂断等。该 API 旨在用于客户端(互联网浏览器/activex)。我们想使用这个服务器端并通过对经典 ASP 脚本的 ajax 调用来执行拨号命令。

初始化组件的基本VBScript如下:

<%
 set objPhone = server.createobject("XariosPhoneManager.PhoneManager")
 objPhone.RemoteHost = "192.168.0.17"
 objPhone.RemotePort = "2001"
 objPhone.OAIPassword = ""
 objPhone.Extension = "1000"
 objPhone.Initialise()
 set objPhone = nothing
 %>

但我无法拨打拨号命令

objPhone.MakeCall("1001")

直到“初始化”事件发生。经典 ASP 有没有办法在执行某些代码之前等待事件触发?

【问题讨论】:

    标签: asp-classic vbscript event-handling activex


    【解决方案1】:

    不是最优雅的解决方案,但您可以捕获错误然后循环并在调用失败时重试调用,然后再试一次 - 您可以在循环中暂停以使进程有机会完成。您还可以对尝试次数进行限制,以便它最终放弃并且不会陷入无限循环。类似于(未完成或未测试):

    numTries = 0
    processComplete = False
    Do Until processComplete or numTries>=10
      On Error Resume Next  
      '## YOUR CODE TO CALL THE PROCESS HERE
      On Error Goto 0  
      numTries=CDbl(numTries)+1
    Loop
    

    【讨论】:

      【解决方案2】:

      我对这个组件一无所知,所以以下涉及一些猜测。

      1) 如果组件有一个属性可以在初始化时跟踪,你可以检查它,一旦它被初始化,调用 MakeCall 方法。

      2) 我猜该组件有一个 OnInitializedComplete 事件(或类似事件),如果是这样,请在 JScript 中编写您的服务器端代码并​​为该事件分配一个函数。

      【讨论】:

      • 事实证明这在 ASP 中根本不可能。没有公开的属性表明组件已初始化,只是触发的初始化事件。不幸的是,ASP 无法检测到事件。开发人员建议将他们的组件包装在一个负责事件管理的新 DLL 中,但我没有资源来做这件事。他们承诺在未来版本的软件中提供真正的服务器端功能。
      【解决方案3】:

      事实证明这在 ASP 中根本不可能。没有暴露的属性表明组件已初始化,只是触发的初始化事件。不幸的是,ASP 无法检测到事件。开发人员建议将他们的组件包装在一个负责事件管理的新 DLL 中,但我没有资源来做这件事。他们承诺在未来版本的软件中提供真正的服务器端功能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-29
        相关资源
        最近更新 更多