社区
C#
帖子详情
c#编写DLL如何调用VC开发的ocx内的事件
cutu
2009-05-21 08:56:58
目前遇到个难题
已有一个现成的ocx,该ocx内有一些自动触发的事件,在c#的winform内调用一切ok。
现在需要用c#写一个dll来调用这个ocx,问题在于不知道该如何调用ocx内的事件,因为没有窗口,无法将ocx直接托拽到窗口上,
仅仅通过引用那个ocx来调用代码会报错。如果将ocx当作普通的dll,用loadlibrary来调用,则不知道该怎么调用事件。
请教大虾们,如何解决??
...全文
380
12
打赏
收藏
c#编写DLL如何调用VC开发的ocx内的事件
目前遇到个难题 已有一个现成的ocx,该ocx内有一些自动触发的事件,在c#的winform内调用一切ok。 现在需要用c#写一个dll来调用这个ocx,问题在于不知道该如何调用ocx内的事件,因为没有窗口,无法将ocx直接托拽到窗口上, 仅仅通过引用那个ocx来调用代码会报错。如果将ocx当作普通的dll,用loadlibrary来调用,则不知道该怎么调用事件。 请教大虾们,如何解决??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
davidxie2
2011-09-29
打赏
举报
回复
大致就是:
1、动态创建控件,作为OCX的容器
2、隐藏
3、触发控件的事件
davidxie2
2011-09-29
打赏
举报
回复
这个帖子有意思。
峰子2017
2010-08-23
打赏
举报
回复
lz的建议我也看不懂,能否详细说明一下哪?
cutu
2009-05-22
打赏
举报
回复
实在愚笨,楼上的建议看不明白
真相重于对错
2009-05-21
打赏
举报
回复
那个ocx需要一个容器承载,无法直接初始化
你可以用个容器承载这个ocx ,再把容器隐藏
cutu
2009-05-21
打赏
举报
回复
楼上的回答我没看懂
我做了如下尝试:
在一个winform上,将ocx托拽到界面上,自然一切ok。
然后将InitializeComponent中的this.Controls.Add(这个ocx对象) 语句注释掉,因为要使用dll 调用ocx,显然不可能有this.Controls。
然后就报错了
引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。
我查了下,msdn的解释是:只有在完成对 ActiveX 控件的实例化和初始化之后,才可以引用 ActiveX 控件的公有属性和方法,否则就会引发 AxHost.InvalidActiveXStateException 异常。
连接如下:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.axhost.invalidactivexstateexception(VS.80).aspx连接如下:
dll中无法对ocx进行实例化啊,怎么办呢?
super_hgl
2009-05-21
打赏
举报
回复
控件里有个事件可以的
cutu
2009-05-21
打赏
举报
回复
终于有人看到了
赶紧提问,怎么用事件?
没有窗口,无法将ocx托拽到界面上。只能引用ocx,但是调用ocx内的函数时,就报如下错误:
未处理 System.Runtime.InteropServices.COMException
Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
Source="mscorlib"
ErrorCode=-2147418113
StackTrace:
在 System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
在 ULTRATELLib.UltraTelClass.TelConnect(String strServerIP)
在 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 位置 E:\程序\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs:行号 24
在 System.Windows.Forms.Form.OnLoad(EventArgs e)
在 System.Windows.Forms.Form.OnCreateControl()
在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
在 System.Windows.Forms.Control.CreateControl()
在 System.Windows.Forms.Control.WmShowWindow(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
在 System.Windows.Forms.Form.WmShowWindow(Message& m)
在 System.Windows.Forms.Form.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
在 System.Windows.Forms.Control.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Form.SetVisibleCore(Boolean value)
在 System.Windows.Forms.Control.set_Visible(Boolean value)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 WindowsFormsApplication1.Program.Main() 位置 E:\程序\WindowsFormsApplication1\WindowsFormsApplication1\Program.cs:行号 18
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:
真相重于对错
2009-05-21
打赏
举报
回复
用事件
根普通的控件事件基本一致
cutu
2009-05-21
打赏
举报
回复
自己顶,等待大虾光临
tan124
2009-05-21
打赏
举报
回复
可以在他中间放入一个创建一个ocx的Myload再用多线程看看
cutu
2009-05-21
打赏
举报
回复
hdt,劳驾能否给出更详细的说明,什么样的容器,哪怕给一个函数声明吧。
c#
调用
vc
写的
ocx
控件示例
在
c#
中怎样
调用
VC
写的
OCX
控件,主要有两个关键环节 两个关键环节:导入
ocx
控件,创建实例。1 注册
ocx
: 代码如下:regsvr32.exe alasunsmscon.
ocx
2 在CMD窗口中执行: 代码如下:AxImp.exe alasunsmscon.
ocx
生成两个文件:alasun.
dll
,Axalasun.
dll
3 在项目中引用Axalasun.
dll
4
调用
代码如下:Axalasun.Axalasunsms sms = new Axalasun.Axalasunsms();sms.CreateControl(); 就可以使用了 这里还有一个
c#
控制台模式下
调用
vc
开发
MSCHRT20.
OCX
MS CHART控件安装。
VC
6.0/MFC/
C#
中经常需要使用MS CHART控件来做图表,但他们本身不自带这个控件,所以需要我们自己下载
OCX
文件并进行注册。 注册方法: 1.XP系统下:将解压出来的MSCHRT20.
OCX
,msdatasrc.
dll
拷贝到C:\WINDOWS\SYSTEM32目录下,运行cmd后输入regsvr32 MSCHRT20.
OCX
加回车。即可在
VC
6.0/MFC/
C#
中使用CHART控件。 2.WIN7/8系统下:将解压出来的MSCHRT20.
OCX
,msdatasrc.
dll
放在同一目录下(C盘除外,例如存放在D:\local下),运行cmd后到C:\Windows\System32>路径下,输入regsvr32 D:\local\MSCHRT20.
OCX
加回车。即可在
VC
6.0/MFC/
C#
中使用CHART控件。 win7/8下使用方法1进行注册会出现错误:模块“MSCHRT20.
OCX
”加载失败 请确保该二进制存储在指定路径中,或者调试它以检查该二进制或相关的.
DLL
文件是否有问题。 找不到指定的模块。
普天二代证
开发
包(2011版)
最新2011版本普天二代证
开发
包,包含
C#
、
VC
语言
开发
包
打印控件
ocx
一款高性能的报表
开发
工具,特别适用于管理信息系统,如ERP、进销存、财务等软件的报表
开发
。适用范围广:VB.NET、
C#
.NET、VB、
VC
、Delphi、C++Builder、中文编程易语言等一切支持 COM 的
开发
工具。
功能强大:实现普通格式报表、表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,非常适合
开发
通用软件中的动态报表。
独有的报表查询显示功能:除了提供报表的打印、打印预览、数据导出等功能,还提供独有的报表查询显示功能,既提供报表查询与输出的集成一次性实现,又能保证数据的一致性与完整性。
报表完全可编程定义,报表运行编程可控制,
开发
动态报表方便灵活。
特有的分组单元格合并功能,轻松实现常见的中国式报表分组在列中展现形式。
实现票据套打非常简便:对票据套打进行了专门的实现。
提供图表功能,包括饼图、柱状图、叠加柱状图、连线图、散列点图等,在报表中直接实现图表功能。
报表数据导出格式丰富,包括:Excel、PDF、图像、HTML、文本,CSV等多种格式。
支持所有常规条形码。
报表模板提供脚本编程功能,直接在报表模板中自定义报表行为。
支持参数化报表查询SQL语句,轻松实现动态过滤条件筛选报表数据。
运行时打印生成对纸张有适应能力,即使不以设计时纸张进行打印也可以得到输出布局合理的报表。
报表查询显示时提供报表内容文字查找功能。
全中文界面,针对中国报表进行了很多专门实现,如:报表表格线、财务金额线、数字大写金额、负数红字显示、多层表头等。
组件提供丰富交互
事件
,轻松实现报表穿透(透视)查询和报表交互。
重新发布简单:最多只需分发两个
DLL
文件。
易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复与重做(Undo/Redo)功能。
编写
了完整详尽的帮助文档。提供了丰富例程,包括VB.NET、
C#
、VB、
VC
、Delphi、CBuilder、中文编程易语言。
为 Delphi、C++Builder 进行了专门的包装,象使用
VC
L 构件一样使用
天香锦系列产品
开发
接口
天香锦系列产品包括来电通、录音盒、电话机、话务盒,使用同样的
开发
接口,提供
OCX
和
DLL
,
开发
例子有
VC
、
C#
、DELPHI、.NET。
C#
110,549
社区成员
642,562
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章