在Javascript中调用activeX的方法问题

dancelau 2005-10-06 11:05:38
各位前辈好,小弟正在努力学习用BCB自己开发activeX控件,然后在IE中调用。

内容是:在activeForm中放一个Edit,一个Button,一个ListBox。单击按钮Button1Click,执行ListBox1->Items->Add(Edit1->Text) ;

内容很简单,发布也成功了。现在我想在网页中用Submit按钮来实现Button1Click这个事件,该如何实现呢?

//--下面是网页里的代码-----
<HTML>
<body>
<script language="javascript">
function StartClick(){
document.activexCall_test.Button1Click();
}
</script>
<H1> C++Builder 6 ActiveX Test Page </H1><p>
You should see your C++Builder 6 forms or controls embedded in the form below.
<HR><center><P>
<form name="form1" method="post" action="">
<OBJECT id="activexCall_test"
classid="clsid:316C77CD-99FC-4000-BC62-4371B0447E5F"
codebase="http://localhost/test2/ActiveFormProj2.ocx#version=1,0,0,0"
width="550"
height="350"
align="left"
hspace="0"
vspace="0"
>
</OBJECT>
<input type="submit" name="Submit" value="ok" onClick=" return StartClick()">
</form>
</body>
</HTML>

//-----------

小弟刚开始学,基础挺差,可能问题都没有说清楚。开发activeX需要全面、扎实的基础,而我现在不得不需要这样一个功能。所以请各位帮着看一下;或者是提供一个BCB的、实现了上述功能的实例,dance_lau@yahoo.com.cn 我好好研究研究。

非常感谢!
...全文
478 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
myy 2005-11-18
  • 打赏
  • 举报
回复
怎样通过JavaScript给activeX传递参数呢?
---------------
JavaScript 只能调用 activeX 的接口,接口在哪里呢?在bcb中打开 View|Type Library 菜单,左边的TreeView上就是了,要自己加接口,方法,属性,事件,,也都在这里加。
dancelau 2005-11-18
  • 打赏
  • 举报
回复
谢谢xingzhou
你的坦诚很让人感动,我好好研究一下。
xingzhou 2005-11-03
  • 打赏
  • 举报
回复
你看看我这个:
<html>
<head>
<title>测试ActiveX控件</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<script language="VBScript">
' 卡机对象接口

Sub ShowSuccess(oprName)
MsgBox "执行操作: " + oprName, vbOkOnly + vbInformation, "操作成功"
End Sub
Sub ShowFault(oprName)
MsgBox "执行操作: " + oprName + vbCrLf + "错误代码: " + CStr(IC.ErrorCode) + vbCrLf + "错误说明: " + IC.ErrorString, vbOkOnly + vbExclamation, "操作失败"
End Sub
Sub ShowError(Pmt)
MsgBox Pmt, vbOkOnly + vbExclamation, "售电管理系统"
End Sub


Function IC_GetResult(oprName)
' MsgBox "GetResult"

if Err.Number<>0 then
ShowFault "调用卡机对象失败(" + oprName + ")"
IC_GetResult = False
Else
if IC.ErrorCode >= 0 then
ShowSuccess oprName
IC_GetResult = True
else
ShowFault oprName
IC_GetResult = False
end if
End IF
End Function

' 自动弹卡
Sub IC_AutoPull()
Err.Clear
' On Error Resume Next
IC.AutoPull

IC_GetResult("自动弹卡")
End Sub

Function IC_ChangePwd(fv_CardID, fv_CardPwd, fv_NewPwd)
Err.Clear
' On Error Resume Next

IC_ChangePwd = False
' 检查参数
If IsNull(fv_CardID) or Not IsNumeric(fv_CardID) then
ShowError "修改密码前, 必须设置卡类型"
Exit Function
End If
If IsNull(fv_CardPwd) or IsNull(fv_NewPwd) then
ShowError "修改密码, 参数不能为空"
Exit Function
End If
If fv_CardPwd = "" then
ShowError "修改密码, 必须输入原来的密码"
Exit Function
End If
If fv_NewPwd = "" then
ShowError "修改密码, 必须输入新的密码"
Exit Function
End If

If fv_NewPwd = fv_CardPwd then
ShowError "两个密码相同, 不必修改"
Exit Function
End If

IC.ChangePwd fv_CardID,fv_CardPwd,fv_NewPwd

IC_ChangePwd = IC_GetResult("修改密码")
End Function

Function IC_ClearCard(fv_CardID, fv_CardPwd,fv_Address,fv_Count)
Err.Clear
' On Error Resume Next

IC_ClearCard = False
' 检查参数
If IsNull(fv_CardID) or Not IsNumeric(fv_CardID) then
ShowError "清卡前, 必须设置卡类型"
Exit Function
End If
If IsNull(fv_Address) or IsNull(fv_Count) then
ShowError "清卡, 参数不能为空"
Exit Function
End If
If Not IsNumeric(fv_Address) or Not IsNumeric(fv_Count) then
ShowError "清卡, 参数类型错误"
Exit Function
End If

IC.Clear fv_CardID,fv_CardPwd,fv_Address,fv_Count

IC_ClearCard = IC_GetResult("清卡")
End Function

Function IC_ReadCard(fv_CardID, fv_CardPwd,fv_Address,fv_Count, ByRef fv_OutData)
Err.Clear
' On Error Resume Next

IC_ReadCard = False
' 检查参数
If IsNull(fv_CardID) or Not IsNumeric(fv_CardID) then
ShowError "读卡前, 必须设置卡类型"
Exit Function
End If
If IsNull(fv_Address) or IsNull(fv_Count) then
ShowError "读卡, 参数不能为空"
Exit Function
End If
If Not IsNumeric(fv_Address) or Not IsNumeric(fv_Count) then
ShowError "读卡, 参数类型错误"
Exit Function
End If

fv_OutData = IC.Read(fv_CardID,fv_CardPwd,fv_Address,fv_Count)

IC_ReadCard = IC_GetResult("读卡")
End Function

Function IC_WriteCard(fv_CardID, fv_CardPwd,fv_Address,fv_Count, fv_InData)
Err.Clear
' On Error Resume Next

IC_WriteCard= False
' 检查参数
If IsNull(fv_CardID) or Not IsNumeric(fv_CardID) then
ShowError "写卡前, 必须设置卡类型"
Exit Function
End If
If IsNull(fv_Address) or IsNull(fv_Count) or IsNull(fv_InData) then
ShowError "写卡, 参数不能为空"
Exit Function
End If
If Not IsNumeric(fv_Address) or Not IsNumeric(fv_Count) then
ShowError "写卡, 参数类型错误"
Exit Function
End If
If Len(fv_InData) < fv_Count*2 then
ShowError "写卡, 输入的数据字符数不够"
Exit Function
End If

IC.Write fv_CardID,fv_CardPwd,fv_Address,fv_Count,fv_InData

IC_WriteCard = IC_GetResult("写卡")
End Function
</script>

<script language="VBScript">

Sub AutoPullByCOM()
Err.Clear
' On Error Resume Next
MsgBox("初使化IC_IO")

set ic_opr=CreateObject("IC_OCX.IC_Opr")
if Err.Number<>0 then
MsgBox("IC_IO not properly installed!"+ vbCrLf+"Please Install IC_IO again"+vbCrLf)
MsgBox("错误代码:" + Err.Source)
MsgBox("错误代码:" + CStr(Err.Number))
else
MsgBox("IC_IO installed!")
ic_opr.DeviceID = 2
ic_opr.Port = 1
ic_opr.AutoPull
end if
end Sub

Sub AutoPull()
IC_AutoPull()
End Sub

Dim Address,Count,CardPwd,NewPwd,CardID,WriteTxt

Sub GetParameter()
Dim TheForm
Set TheForm = Document.formParameter
Address = TheForm.Address.Value
Count = TheForm.ByteCount.Value
CardPwd = TheForm.CardPwd.Value
NewPwd= TheForm.NewPwd.Value
CardID = TheForm.CardID.Value
WriteTxt = TheForm.WriteTxt.Value
End Sub

Sub ChangePwd()
GetParameter()
IC_ChangePwd CardID,CardPwd,NewPwd
End Sub

Sub WriteCard()
GetParameter()
IC_WriteCard CardID,CardPwd,Address,Count,WriteTxt
End Sub

Sub ClearCard()
GetParameter()
IC_ClearCard CardID,CardPwd,Address,Count
End Sub

Sub ReadCard()
GetParameter()
Dim OutData
If IC_ReadCard(CardID,CardPwd,Address,Count,OutData) = True then
Document.formParameter.txtReaded.Value = OutData
End if
End Sub
</script>

<body bgcolor="#FFFFFF" text="#000000">
<form name="formParameter" method="post" action="">
<a href="javascript:AutoPull()">弹卡(Superlink)</a>
<input type="button" name="btnAutoPullByCOM" value="弹卡(COM)" onClick="AutoPullByCOM()">
<br>
<br>
<font color="#FF0000" size="+2">ActiveX实现的功能</font><br>
系统的system(2000系统为system32)目录下面必须有下面的文件(下载<a href="dll.zip">dll.zip</a>展开到这个目录,并注册IC_OCX.OCX文件):<br>
IC_IO.dll, Mwic_32.dll, Sure32wc.dll, SureDrv.dll, ws_card_ip.dll, <br>
卡类型
<select name="CardID">
<option value="1" selected>102</option>
<option value="2">4428</option>
<option value="3">24C64</option>
</select>
卡密码
<input type="text" name="CardPwd" maxlength="4" size="8" value="f0f0">
<input type="button" name="btnAutoPull" value="弹卡" onClick="AutoPull()">
<br>
修改密码,新密码
<input type="text" name="NewPwd" maxlength="4" size="8">
<input type="button" name="btnChangePwd" value="修改密码" onClick="ChangePwd()">
<br>
开始地址
<input type="text" name="Address" maxlength="5" size="8" value="80">
字节个数
<input type="text" name="ByteCount" maxlength="5" size="8" value="8">
<input type="button" name="btnClear" value="清卡" onClick="ClearCard()">
<br>
读卡结果
<input type="text" name="txtReaded" size="40">
<input type="button" name="btnRead" value="读卡" onClick="ReadCard()">
<br>
写的文本(必须是ASCII码序列,两个一组(如0001020304050607)
<input type="text" name="WriteTxt" maxlength="32" size="20" value="0001020304050607">
<input type="button" name="btnWrite" value="写卡" onClick="WriteCard()">
</form>
<br>
<OBJECT id="IC"
classid="clsid:6A8945A5-2A1C-44E8-AFAA-712DA0A021E9"
width=260
height=80
hspace=0
vspace=0
></OBJECT>
<!--
没有版本号则不执行下载,
<OBJECT id="IC"
classid="clsid:6A8945A5-2A1C-44E8-AFAA-712DA0A021E9"
codebase="http://192.168.0.115/ocx/IC_OCX.ocx#version=1,0,0,0"
width=300
height=100
align=center
hspace=0
vspace=0
>
-->
</OBJECT>
</body>
</html>


-----------------
泥水行舟,不进则退
CSDN论坛浏览器
dancelau 2005-11-02
  • 打赏
  • 举报
回复
哪怎样才能够行呢?有什么教程没?
lurel 2005-10-22
  • 打赏
  • 举报
回复
好象是不行吧,javascript只能操纵存在的对象
dancelau 2005-10-08
  • 打赏
  • 举报
回复
开始上班了,再顶一下!
dancelau 2005-10-06
  • 打赏
  • 举报
回复
自己再补充
是不是需要在activeX中定义哪些属性、哪些方法能够被外界访问?

那么,在BCB写的程序中,怎么定义呢?
dancelau 2005-10-06
  • 打赏
  • 举报
回复
自己再补充一个
怎样通过JavaScript给activeX传递参数呢?

比如:
function StartClick(args){
document.activexCall_test.ListBox1->Items->Add(args);
}

但是,参数没有传递进去,是什么原因呢?

我好像在JavaScript和activeX之间有一条路没有走通。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧