首页 新闻 会员 周边

vs2005如何调用vc6.0制作的.ocx

0
悬赏园豆:100 [已解决问题] 解决于 2010-07-15 09:31

我现在用vc6.0做了一个.ocx控件(驱动一个摄像头采集图像),想加到vs2005做的网页系统中,加到工具栏中,控件变灰,无法使用,在页面中直接加入控件,使用runat="server",提示说guid,格式不对,请教如何才能让控件运行起来,望大家不吝赐教,谢谢!!

问题补充: 我现在直接在项目程序中添加了控件的引用,跟踪的堆栈错误如下,但是我看不懂,那位能帮忙分析一下,我对网络编程不熟,所以这方面很白痴,望赐教 [COMException (0x8000ffff): 灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))] System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) +438 MXUSBOCXLib.MxUsbOcxClass.IsMxUsbDevice() +0 _Default.ValidateADUser(String UserID, String Pwd) in c:\Documents and Settings\lzp\桌面\登录演示\test1\Default.aspx.cs:104 _Default.btnOK_Click(Object sender, EventArgs e) in c:\Documents and Settings\lzp\桌面\登录演示\test1\Default.aspx.cs:54 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102 其中MXUSBOCX.ocs是我引用的控件,系统自动添加Interop.MXUSBOCXLib.dll这一项,
fishfly1314的主页 fishfly1314 | 初学一级 | 园豆:100
提问于:2010-07-11 11:15
< >
分享
最佳答案
0
代码
1 <HTML>
2 <HEAD>
3 <TITLE>行情系统BS测试页面</TITLE>
4 </HEAD>
5 <BODY onload="window_onload()">
6
7 <OBJECT ID="ob1" WIDTH=850 HEIGHT=500
8 CODEBASE="TXInfoOcx.cab#Version=1,0,0,1"
9 CLASSID="CLSID:C01F1426-74C6-4340-87D5-07395910839E">
10 <PARAM NAME="_Version" VALUE="65536">
11 <PARAM NAME="_ExtentX" VALUE="3620">
12 <PARAM NAME="_ExtentY" VALUE="1873">
13 <PARAM NAME="_StockProps" VALUE="0">
14 </OBJECT>
15
16 <script language=JavaScript>
17 function window_onload()
18 {
19 alert("onload!");
20 ob1.SetParam("user1", "code1", "20061017");
21 }
22
23 function SendID()
24 {
25 var temp=form1.T1.value;
26 ob1.SetParam(temp, "600000");
27 ob1.SetDateTime(20061010, "13:10:10", "13:15:10");
28 }
29
30 function SendStockCode()
31 {
32 var temp=form1.T2.value;
33 ob1.SetStockCode(temp);
34 }
35
36 function ExecuteTxInfo()
37 {
38   ob1.ExecuteTxInfo();
39 }
40 </script>
41
42 </p>
43 <form name="form1" method="POST" action="--WEBBOT-SELF--">
44 <p>
45 输入用户ID<input type="text" name="T1" size="20" value="">
46 <input type="button" name="Submit" value="提交" onClick="SendID()">
47 </p>
48 <p>
49 输入股票代码<input type="text" name="T2" size="20" value="">
50 <input type="button" name="Submit" value="提交" onClick="SendStockCode()">
51 </p>
52 <input type="button" value="启动天相行情系统" name="B1" onclick="ExecuteTxInfo()">
53 </form>
54
55 </body>
56 </html>

 你得先把你的ocx打包成cab.

收获园豆:60
Launcher | 高人七级 |园豆:45045 | 2010-07-12 10:24
您好,感谢您的提示,我的系统用的是vs2005做的,我在页面中加入如您提示的方式加入控件(aspx文件中),则对应的后台代码(aspx.cs文件中),找不到定义的控件,因为代码和页面布局是分离的,必须加属性runat=server才可以被后台代码找到,但是加这个属性后runat=server后,编译错误,错误的结果是说控件的guid错误,
fishfly1314 | 园豆:100 (初学一级) | 2010-07-12 14:27
因为系统是做好的了,我只是负责这一小部分,所以没法变化系统.再次谢谢您的指导
fishfly1314 | 园豆:100 (初学一级) | 2010-07-12 14:29
@fishfly1314:看你的ocx的功能,它应该是运行在客户端浏览器窗口中的,所以他不是runat=server的.你应该按照我告诉你的方式来部署你的ocx控件,在客户端页面中使用vb script 或 java script 来调用该ocx控件的方法去和usb摄像头交互.当你的ocx需要和服务器交互时,你可能需要在ocx中使用socket和服务器通讯,也可以通过页面脚本读取你的ocx的信息,再通过表单的形式提交给服务器.
Launcher | 园豆:45045 (高人七级) | 2010-07-15 09:49
@fishfly1314:如果开发人员没告诉你ocx的guid,你可以通过命令行 regsvr32 xxx.ocx 的方式注册你的xxx.ocx,然后通过添加com引用查找到该activeX组件的名称,通过该名称,你可以在注册表中搜索到和该名称匹配的guid.
Launcher | 园豆:45045 (高人七级) | 2010-07-15 09:52
你好,首先谢谢您的回复,我在vs2005中使用这个控件,.aspx与.aspx.cs文件是分开的,我的ocx必须在.aspx.cs中使用,因为还要使用其中的几个函数,处理数据.另ocx的guid我是知道的,请问如何在c#文件中添加com引用,其实我的控件不需要在前台页面中使用,因为不需要显示.
fishfly1314 | 园豆:100 (初学一级) | 2010-07-18 17:17
使用js或jb脚本语言,调用我的ocx控件没问题,就是在vs2005中,c#调用,没找到方法,呵呵
fishfly1314 | 园豆:100 (初学一级) | 2010-07-18 19:12
其他回答(2)
0

这样类似的功能我也实现过。

不过我使用的是浏览器插件,就像引入flash一样,

然后用JavaScript调用里面的方法

希望能给你提供一个思路

收获园豆:20
vistang | 园豆:69 (初学一级) | 2010-07-11 11:44
谢谢您的提示,那个控件也不需要在页面上显示,只是需要在后台操作设备,所以我现在试着直接引用,但是也不行,看来还需要别的方法,我对网页编程不会,公司临时安排的一个项目,没办法,硬着头皮上了
支持(0) 反对(0) fishfly1314 | 园豆:100 (初学一级) | 2010-07-12 08:56
0

试着把客户端设置成服务器网址为可信任站点,同时将可信任站点的安全级别设为最低,打开网页再试试

收获园豆:20
墨墨 | 园豆:250 (菜鸟二级) | 2010-07-12 09:22
谢谢您的建议.设成可信任站点,首先要本地调试成功吧,现在本地都无法使用.所以不是这方面的原因,
支持(0) 反对(0) fishfly1314 | 园豆:100 (初学一级) | 2010-07-12 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册