欢迎来到天天文库
浏览记录
ID:40531727
大小:43.00 KB
页数:8页
时间:2019-08-04
《C#调用activeX控件方法步骤》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#中调用OCX控件调用OCX控件的步骤:1、在系统中注册该ocx控件,命令:regsvr32.exe控件位置(加/u参数是取消注册)2、在.net的工具箱中添加该控件,拖到form中去就可以了。不用工具箱的话,自己手工添加,需要注意一个问题,就是要用Aximp.exe来包装一下ocx控件的类,然后再程序中引用生成的dll就可以了。aximp[options]{file.dll
2、file.ocx}ThefollowingcommandgeneratesMediaPlayer.dllandAxMediaP
3、layer.dllfortheMediaPlayercontrolmsdxm.ocx.aximpc:systemrootsystem32msdxm.ocxActiveX控件导入程序将ActiveX控件的COM类型库中的类型定义转换为Windows窗体控件。Windows窗体只能承载Windows窗体控件,即从Control派生的类。Aximp.exe生成可承载于Windows窗体上的ActiveX控件的包装类。这使您得以使用可应用于其他Windows窗体控件的同一设计时支持和编程方法论。若要承载A
4、ctiveX控件,必须生成从AxHost派生的包装控件。此包装控件包含基础ActiveX控件的一个实例。它知道如何与ActiveX控件通信,但它显示为Windows窗体控件。这个生成的控件承载ActiveX控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。如果不包装一下直接用,会出现灾难性错误。上面已经说明了原因。在项目中引用生成的ax开头的dll,在窗体代码中增加:声明一个公有的控件对象:publicAxISPICRECLib.AxISPICRECAxISPICREC;在Initialize
5、Component()方法内初始化控件:AxISPICREC=newAxISPICRECLib.AxISPICREC();//必须new对象,否则窗体设计器出问题 ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).BeginInit();//初始化开始 this.Controls.Add(this.AxISPICREC);//添加控件 ((System.Component
6、Model.ISupportInitialize)(this.AxISPICREC)).EndInit(); this.AxISPICREC.OcxState=((System.Windows.Forms.AxHost.State)(resources.GetObject("AxISPICREC.OcxState")));//设计控件状态如果遇到“正试图在os加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常”"----"ManagedDebuggingAssistants
7、"中勾掉"LoaderLock"就可以了。二、正试图在os加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码解决方法:.NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock是其中之一。Loaderlock检测在一个拥有操作系统loaderlock的线程上运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。 解决此异常的方法为:·办法一1.把vs2005菜单的调试->异常->ManagedDebugginAssi
8、stants->LoaderLock的选中状态去掉2.如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边选择调试--右边把异常托到菜单里3.快捷键Ctrl+Alt+E,修改ManagedDebugginAssistants->LoaderLock的选中状态去掉·方法二在HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFramework下面增加一个String,值为"0" 不过这样做,在该计算机上所有基于.NET2.0开发都得
9、不到MDA的好处。三、Re:C#中调用OCX控件C#DllImport的用法大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。DllImport所在的名字空间usingSystem.Runtime.InteropServ
此文档下载收益归作者所有