F
Frank
Any suggestions on how I should handle this?
I was asked to convert a small web application that was written in classic
ASP into ASP.NET.
The original site uses some VBScript to interface with an ActiveX control,
which is contained in a CAB file.
Somehow, I have managed to use the original VBScript in a respective .NET
page, but there are several problems.
First, I need to pass into the VBScript, several .NET Session variables that
I have collected in a previous page for use by the ActiveX. I have
accomplished this by storing the variables in hidden input fields, and then
I retrieve their value from withing the VBScript. But this is such ugly
programming.
Second, in the original VBScript, the ActiveX control returns a string
(called 'Packet' in function 'citcp2_PacketReceived') and really just stores
in in a variable. I wish to pass that string on to the next page via .NET
Session, but since the last function to execute in the page is the
aforementioned 'citcp2_PacketReceived', and it's last inst instruction is to
submit, I do not know how to store the returned string into the .NET
Session. Normally, I would call a function from my C# script that would add
the string to the Session, but I don't think I can call a C# funtion form
with the VBScript.
Any suggestions on how I should handle this? Should I or can I convert the
VBScript into VB? I tried changing the language by simply cnging the
language name, but then I get an error that says "Object is expected". I
think it means that the VB script doesn't see the ActiveX control.
In the working VBScript, soSubmit() is called first, then
citcp2_Connection(address) fires and calls doSendTrade, and finally
citcp2_PacketReceived(Packet,bytes_in) fires. Here is the script:
<script LANGUAGE="vbscript" CODEPAGE="1252">
dim bTrade
bTrade = false
function doSubmit()
trade_entry_verify.citcp2.CloseSocket
trade_entry_verify.citcp2.HostAddress = "IP Adress"
trade_entry_verify.citcp2.Port = "PortNum"
Result = trade_entry_verify.citcp2.ConnectToHost
end function
Private Sub citcp2_Connection(address)
trade_entry_verify.citcp2.Send "~| Demo Screen - V7.0 -DEMO SCREE "
call doSendTrade
End Sub
Private Sub citcp2_PacketReceived(Packet,bytes_in)
trade_entry_verify.txtTrade.value = Packet
//For testing - get and store packet string in hidden label
trade_entry_verify.packetHidden.value = Packet
//For testing - retrieve and display value from hidden label in HTML
control to ensure proper output
trade_entry_verify.txtTrade2.value =
trade_entry_verify.packetHidden.value
//Session("strPacket")=Packet
//now add packet value to session
//HOW??
if bTrade then trade_entry_verify.submit
trade_entry_verify.citcp2.CloseSocket
end sub
function doSendTrade()
strTradeType = document.all.transTypeHidden.value
strOrderSpec = document.all.orderSpecHidden.value
strQty = document.all.qtyHidden.value
strMonth = document.all.monthHidden.value
strYear = document.all.yearHidden.value
strCommodity = document.all.commodityHidden.value
strCommSymbol = document.all.commoditySymbolHidden.value
strStopPrice = document.all.monthHidden.value
strLimitPrice = document.all.transTypeHidden.value
strNotes = document.all.commoditySymbolHidden.value
strSymbol = strCommSymbol & strMonth & strYear
sStr = "!NO, " & "D1003-79, " & date() & " @ " & time() & ", " &
strTradeType & ", " & strQty & ", " & strSymbol & ", DAY, " & strOrderSpec
If strOrderSpec = "MARKET" Then
sStr = sStr & ", "
ElseIf strOrderSpec = "STOP" Then
sStr = sStr & ", " & "999"
ElseIf strOrderSpec = "LIMIT" Then
sStr = sStr & ", " & "999"
End If
sStr = sStr & ", , , 0, 0, 0, 0, , Account , AcctNum|"
trade_entry_verify.txtTradeRequest.value = sStr
bTrade = true
trade_entry_verify.citcp2.Send sStr
end function
</script>
In the HTML code, the AciveX is embedded as such:
<form name="trade_entry_verify" action="trade_entry_submit.aspx"
method="post">
<asp:table id="Table1" runat="server" CellPadding="3"
CellSpacing="3" />
<p> </p>
<p>
<input name="Cancel" type="button" id="Cancel" value="Cancel"
onClick="history.go(-1)">
<font color="#FFFFFF">----------------------</font>
<input type="button" value="Place Order" onclick="doSubmit()">
</p>
<INPUT id="txtTradeRequest" type="text" size="123" name="Text1">
<p>
<TEXTAREA id="txtTrade" name="Textarea1" rows="2"
cols="120"></TEXTAREA>
<textarea id="txtTrade2" name="textarea" rows="2"
cols="120"></textarea>
</p>
<p> </p>
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_Licensed_Class_Manager_1_0"1 VIEWASTEXT>
<PARAM NAME="LPKPath" VALUE="BCITCP.lpk">
</OBJECT>
<OBJECT id="CITCP2" height="0" width="0"
classid="clsid:CAC161FD-C2F9-4F0F-95F3-A3D4E5D465CD"
codeBase="BCITCP.CAB#version=1,0,0,0" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="873">
<PARAM NAME="_ExtentY" VALUE="847">
</OBJECT>
<!--get and store session variables from codebehind for use in
VBScript-->
<input type="hidden" id="transTypeHidden" runat="server" >
<input type="hidden" id="qtyHidden" runat="server" >
<input type="hidden" id="yearHidden" runat="server" >
<input type="hidden" id="monthHidden" runat="server" >
<input type="hidden" id="orderSpecHidden" runat="server" >
<input type="hidden" id="commoditySymbolHidden" runat="server">
<input type="hidden" id="commodityHidden" runat="server" >
<input type="hidden" id="stopPriceHidden" runat="server" >
<input type="hidden" id="limitPriceHidden" runat="server" >
<input type="hidden" id="notesHidden" runat="server" >
<!-- get and store returned packet from CITCP2 object Doesn't work-->
<!-- <input type="text" id="packetHidden" runat="server">-->
</form>
I was asked to convert a small web application that was written in classic
ASP into ASP.NET.
The original site uses some VBScript to interface with an ActiveX control,
which is contained in a CAB file.
Somehow, I have managed to use the original VBScript in a respective .NET
page, but there are several problems.
First, I need to pass into the VBScript, several .NET Session variables that
I have collected in a previous page for use by the ActiveX. I have
accomplished this by storing the variables in hidden input fields, and then
I retrieve their value from withing the VBScript. But this is such ugly
programming.
Second, in the original VBScript, the ActiveX control returns a string
(called 'Packet' in function 'citcp2_PacketReceived') and really just stores
in in a variable. I wish to pass that string on to the next page via .NET
Session, but since the last function to execute in the page is the
aforementioned 'citcp2_PacketReceived', and it's last inst instruction is to
submit, I do not know how to store the returned string into the .NET
Session. Normally, I would call a function from my C# script that would add
the string to the Session, but I don't think I can call a C# funtion form
with the VBScript.
Any suggestions on how I should handle this? Should I or can I convert the
VBScript into VB? I tried changing the language by simply cnging the
language name, but then I get an error that says "Object is expected". I
think it means that the VB script doesn't see the ActiveX control.
In the working VBScript, soSubmit() is called first, then
citcp2_Connection(address) fires and calls doSendTrade, and finally
citcp2_PacketReceived(Packet,bytes_in) fires. Here is the script:
<script LANGUAGE="vbscript" CODEPAGE="1252">
dim bTrade
bTrade = false
function doSubmit()
trade_entry_verify.citcp2.CloseSocket
trade_entry_verify.citcp2.HostAddress = "IP Adress"
trade_entry_verify.citcp2.Port = "PortNum"
Result = trade_entry_verify.citcp2.ConnectToHost
end function
Private Sub citcp2_Connection(address)
trade_entry_verify.citcp2.Send "~| Demo Screen - V7.0 -DEMO SCREE "
call doSendTrade
End Sub
Private Sub citcp2_PacketReceived(Packet,bytes_in)
trade_entry_verify.txtTrade.value = Packet
//For testing - get and store packet string in hidden label
trade_entry_verify.packetHidden.value = Packet
//For testing - retrieve and display value from hidden label in HTML
control to ensure proper output
trade_entry_verify.txtTrade2.value =
trade_entry_verify.packetHidden.value
//Session("strPacket")=Packet
//now add packet value to session
//HOW??
if bTrade then trade_entry_verify.submit
trade_entry_verify.citcp2.CloseSocket
end sub
function doSendTrade()
strTradeType = document.all.transTypeHidden.value
strOrderSpec = document.all.orderSpecHidden.value
strQty = document.all.qtyHidden.value
strMonth = document.all.monthHidden.value
strYear = document.all.yearHidden.value
strCommodity = document.all.commodityHidden.value
strCommSymbol = document.all.commoditySymbolHidden.value
strStopPrice = document.all.monthHidden.value
strLimitPrice = document.all.transTypeHidden.value
strNotes = document.all.commoditySymbolHidden.value
strSymbol = strCommSymbol & strMonth & strYear
sStr = "!NO, " & "D1003-79, " & date() & " @ " & time() & ", " &
strTradeType & ", " & strQty & ", " & strSymbol & ", DAY, " & strOrderSpec
If strOrderSpec = "MARKET" Then
sStr = sStr & ", "
ElseIf strOrderSpec = "STOP" Then
sStr = sStr & ", " & "999"
ElseIf strOrderSpec = "LIMIT" Then
sStr = sStr & ", " & "999"
End If
sStr = sStr & ", , , 0, 0, 0, 0, , Account , AcctNum|"
trade_entry_verify.txtTradeRequest.value = sStr
bTrade = true
trade_entry_verify.citcp2.Send sStr
end function
</script>
In the HTML code, the AciveX is embedded as such:
<form name="trade_entry_verify" action="trade_entry_submit.aspx"
method="post">
<asp:table id="Table1" runat="server" CellPadding="3"
CellSpacing="3" />
<p> </p>
<p>
<input name="Cancel" type="button" id="Cancel" value="Cancel"
onClick="history.go(-1)">
<font color="#FFFFFF">----------------------</font>
<input type="button" value="Place Order" onclick="doSubmit()">
</p>
<INPUT id="txtTradeRequest" type="text" size="123" name="Text1">
<p>
<TEXTAREA id="txtTrade" name="Textarea1" rows="2"
cols="120"></TEXTAREA>
<textarea id="txtTrade2" name="textarea" rows="2"
cols="120"></textarea>
</p>
<p> </p>
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_Licensed_Class_Manager_1_0"1 VIEWASTEXT>
<PARAM NAME="LPKPath" VALUE="BCITCP.lpk">
</OBJECT>
<OBJECT id="CITCP2" height="0" width="0"
classid="clsid:CAC161FD-C2F9-4F0F-95F3-A3D4E5D465CD"
codeBase="BCITCP.CAB#version=1,0,0,0" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="873">
<PARAM NAME="_ExtentY" VALUE="847">
</OBJECT>
<!--get and store session variables from codebehind for use in
VBScript-->
<input type="hidden" id="transTypeHidden" runat="server" >
<input type="hidden" id="qtyHidden" runat="server" >
<input type="hidden" id="yearHidden" runat="server" >
<input type="hidden" id="monthHidden" runat="server" >
<input type="hidden" id="orderSpecHidden" runat="server" >
<input type="hidden" id="commoditySymbolHidden" runat="server">
<input type="hidden" id="commodityHidden" runat="server" >
<input type="hidden" id="stopPriceHidden" runat="server" >
<input type="hidden" id="limitPriceHidden" runat="server" >
<input type="hidden" id="notesHidden" runat="server" >
<!-- get and store returned packet from CITCP2 object Doesn't work-->
<!-- <input type="text" id="packetHidden" runat="server">-->
</form>