COM 组件打开对话框 - 如何在 ASP 经典中处理



我正在尝试复制同事在VBA环境中开发的方法(用于验证我们ERP系统的用户(,并在现有的ASP Classic应用程序中实现它。

ERP供应商为其应用程序提供了COM提供商。我们提供用户的ERP凭据,并使用组件来确认它们是否有效。

以为我正在遵循同事的方法,当我提供有效凭据时,它确实有效,但是当我提供无效凭据时,它会锁定应用程序。

深入挖掘,似乎如果凭据有效,则方法调用将返回一个值,并且执行将按预期继续。但是,如果凭据错误,则会出现一个对话框。我的同事在他的 VBA 应用程序中捕获了此事件,自动取消对话框,该对话框将控制权返回给原始调用函数。

VBA 代码示例:

Private WithEvents m_oServer As Server
Private Sub m_oServer_RequestCredentials(Identification As String, Password As String, Cancel As Boolean)
   'Dialog will appear unless we cancel it
   Cancel = True
End Sub
Public Function Check_Logon_Credentials() As Boolean
'starts here   
   If m_oServer.Invoke("ClientApplication", "IdentifyCurrentUser", m_oResult, sibtRecord) Then
      Check_Logon_Credentials = True
   Else
      Check_Logon_Credentials = False
   End If
   'Do more stuff
End Function

看起来m_oServer_RequestCredentials是组件公开的事件处理程序,VBA 能够拦截它,从而取消对话框。

问题是如何在我的 ASP 应用程序中复制它 - 是否有类似的创建事件处理程序的方法(可以取消对话框(?

还是我必须将对这个组件的调用包装在另一个组件中,这可以截获对话框?

还有其他解决方案吗?

不能使用纯服务器端 asp 经典代码处理事件。您需要使用客户端 VBScript 处理这些类型的事件,但不幸的是,客户端 VBScript 仅适用于 Internet Explorer。下面是客户端 VBScript 的示例代码:

<script language="VBScript">
    function mybutton_OnClick()
        answer = MsgBox("2+2=4?",vbYesNo,"Math Test")
        if answer=vbYes then
            MsgBox "Congratulations!",vbOkOnly+vbInformation,"True!" 
        else
            MsgBox "Go learn Math!",vbOkOnly+vbCritical,"Wrong!" 
        end if
    end function
</script>
<input type="button" value="Math Test" name="mybutton">

您可以复制上面的代码并将其粘贴到记事本中,并另存为".html"文件,然后在IE中打开它。

相关内容

  • 没有找到相关文章