这几天做web调用视频控件, 遇到一个很奇怪的问题。问题如下:
首先贴下关键代码:
<script type="text/javascript" language="javascript">
function GetActiveCamera123()
{
var mydll=document.getElementById("my3d");
var ipValue=document.getElementById("IPValue").value;
var DevValue=document.getElementById("DevID").value;
if(ipValue==null||ipValue=="")
{
alert("IP地址不能为空!");
return;
}
if(DevValue==null||DevValue=="")
{
alert("摄像机编号不能为空!");
return;
}
mydll.StartVideo(DevValue,1,false,ipValue);
}
function GetActiveCamera456()
{
var mydll=document.getElementById("my3d");
mydll.CloseVideo();
//alert("关闭成功!");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div align="center">
<object classid="CLSID:7C4BAADE-9A1E-4CB4-8C4B-783B157A105D" id="my3d" width="50%"
height="50%" ><%--codebase="~/Bin/Interop.VIDEOOCXLib.dll"--%>
</object>
</div>
<div align="center">
IP地址:<input id="IPValue" type="text" value="59.175.231.134" />
摄像机编号:<input id="DevID" type="text" value="100035005" />
</div>
<div align="center">
<input type="button" value="打开视频" οnclick="GetActiveCamera123()" />
<input type="button" value="关闭视频" οnclick="GetActiveCamera456()" />
</div>
</form>
</body>
注册控件之后,在HTML页面运行,视频可以打开,是正常的。
但是ASP.NET里面的.aspx页面用相同的代码,点“打开视频”按钮会出现mydll为定义,或者指出StartVideo“该对象不支持此属性或方法”
在网上搜索了很长时间,查找ocx控件的调用方法无果。
后来用搜狗(之前调试一直用IE)打开程序,竟然发现是正常的。
在网上也看到说是浏览器的安全性设置问题,但是仔细对比两个浏览器的设置,没有发现什么不同。
解决方法如下:
修改注册表,添加类似于下面这样的项(用控件的类 ID 取代 {06889605-B8D0-101A-91F1-00608CEAD5B3}
),使您的键同下列类 ID 相关联:
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}