我有一个传统的VB6应用程序。我想将它与我的网络应用程序集成。 VB6应用程序驻留在客户端PC上,我希望与我的网页直接通信。
我正在考虑的选项是Java applet或ActiveX或者xbap app(在我的页面的iframe中运行)。
你可以看到我在技术方面的迷失。如果有人可以指出我正确的方向(或教程/示例),将不胜感激。
我也不确定这个组件如何与VB6 app(COM ??)进行通信
答案 0 :(得分:1)
我一直在VB6和网站之间传递数据。我使用VB6可以轻松访问的XML对象。我在下面显示的代码使用Web服务器上的经典asp页面,但它可以很容易地成为任何其他类型的页面。
我的VB6应用程序中有这个功能
Public Function Download(ByVal AsmxUrl As String) As String
Dim objDom As Object
Dim objXmlHttp As Object
Dim strRet As String
On Error GoTo Err_PW
' Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
' Load XML
objDom.async = False
' Open the webservice
objXmlHttp.Open "GET", AsmxUrl, False
' Create headings
objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
' Send XML command
objXmlHttp.send objDom.xml
' Get all response text from webservice
strRet = objXmlHttp.responseText
' Close object
Set objXmlHttp = Nothing
' Return result
Download = strRet
Exit Function
Err_PW:
Download = "Error: " & Err.Number & " - " & Err.Description
End Function
您可以这样称呼它:
Dim Output As String
Output = Download("http://YourWebsite.com/data.asp?EyeColor=Blue&ShoeSize=9")
Call MsgBox(Output)
在Web服务器上,您将看到一个名为data.asp的页面,如下所示:
<%
Response.Expires = -1000 'Make sure the browser doesn't cache this page
%>
<!-- #include virtual="\include_database.asp" -->
<%
Response.ContentType = "text/plain"
EyeColor = Request("EyeColor")
ShoeSize = Request("ShoeSize")
' Do something interesting with the data
Response.Write "Ouput here"
%>
注意一些有趣的事情。 Response.Expires有一个负数。这意味着该页面会立即过期,因此您无法获得缓存结果。另请注意,内容类型设置为&#34; text / plain&#34;。这意味着响应只是文本。
答案 1 :(得分:0)
如果vb6 GUI和业务逻辑之间存在良好的分离,这将有所帮助。您将需要重构Vb6应用程序,以便尽可能多地从Exe中分离应用程序,并将其放入ActiveX DLL中,该DLL具有您从Web应用程序实例化的一个或多个类。
如果您使用ASP或ASP.NET作为Web技术,这将是最简单的。但是,它可能适用于其他Web技术。
如果你绝望,你可以调整你的Vb6 EXE用于CGI(通用网关接口),但这严格来说是老式的,速度很慢,现代网络服务器可能不支持。