ocx调用

吴恒 2009-04-16 02:00:36
用delphi写一个ocx控件,在.net2005中导入工具箱,在开发windows应用程序时,在工具箱中可以看到这个控件,在开发
asp.net web程序的时候在工具箱中找不到这个控件,但是用html语言可以调用。在c# web中怎么调用ocx控件?
在线等高手指点。谢谢。
...全文
238 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
吴恒 2009-04-16
  • 打赏
  • 举报
回复
风语者我要在web里面实现呀?

zzxap 2009-04-16
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zpjwys/archive/2009/02/05/1384626.html
zzxap 2009-04-16
  • 打赏
  • 举报
回复
[code=C#]
C#中调用OCX控件
2009-03-27 14:20
调用OCX控件的步骤:
1、在系统中注册该ocx控件,命令:regsvr32.exe 控件位置(加 /u 参数是取消注册)
2、在.net的工具箱中添加该控件,拖到form中去就可以了。

不用工具箱的话,自己手工添加,需要注意一个问题,就是要用Aximp.exe来包装一下ocx控件的类,然后再程序中引用生成的dll就可以了。
aximp [options]{file.dll | file.ocx}
The following command generates MediaPlayer.dll and AxMediaPlayer.dll for the Media Player control msdxm.ocx.
aximp c:\systemroot\system32\msdxm.ocx

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。Aximp.exe 生成可承载于 Windows 窗体上的 ActiveX 控件的包装类。这使您得以使用可应用于其他 Windows 窗体控件的同一设计时支持和编程方法论。若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装控件。此包装控件包含基础 ActiveX 控件的一个实例。它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。这个生成的控件承载 ActiveX 控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。

如果不包装一下直接用,会出现 灾难性 错误。上面已经说明了原因。

在项目中引用生成的ax开头的dll,在窗体代码中增加:
声明一个公有的控件对象:
public AxISPICRECLib.AxISPICREC AxISPICREC;
在InitializeComponent()方法内初始化控件:
AxISPICREC = new AxISPICRECLib.AxISPICREC();//必须new对象,否则窗体设计器出问题
((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).BeginInit();//初始化开始
this.Controls.Add(this.AxISPICREC);//添加控件
((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).EndInit();

this.AxISPICREC.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("AxISPICREC.OcxState")));//设计控件状态

如果遇到“正试图在 os 加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常”
"----"Managed Debugging Assistants"中勾掉"LoaderLock" 就可以了。

具体的可以看ms的文章:http://msdn2.microsoft.com/en-us/library/8ccdh774(VS.80).aspx


[/CODE]
吴恒 2009-04-16
  • 打赏
  • 举报
回复
现在想让前台显示这个控件了,后台的代码能用了
冷月孤峰 2009-04-16
  • 打赏
  • 举报
回复
前台如何调用后台的变量:
http://topic.csdn.net/t/20060215/14/4557141.html
吴恒 2009-04-16
  • 打赏
  • 举报
回复
最新进展,现在把控件引用进去后,可以在后台调用这个控件的方法了,但是前台怎么显示呢?前台用html调用的话,后台和前台不是脱勾了吗?
吴恒 2009-04-16
  • 打赏
  • 举报
回复
看了好多贴子,把控件引用进去就可以看到控件,可是我引用进去也看不到控件呀?
吴恒 2009-04-16
  • 打赏
  • 举报
回复
楼上你说的办法我用过了,可以实现,但是我要用C#给这个控件传一些值了,在.cs的页面下怎么调用这个控件

小地主的方法估计可以实现,我是想用C#去调用了,不知道有没有更好的办法。
lateknow 2009-04-16
  • 打赏
  • 举报
回复
先注册OCX.
得到OCX的CLSID,
在ASPX文件里引用:<object classid="CLSID:5F550549-A02B-4D41-9C46-F8D7B03EFF54" id="myOcx" codebase="http://www.xxx.com/mycab.CAB"></object>

在函数里就可以调用id为myOcx的对象了.
冷月孤峰 2009-04-16
  • 打赏
  • 举报
回复

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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