WPF应用ocx控件
来源:互联网 发布:wlk数据库 编辑:程序博客网 时间:2024/06/06 13:02
前言
最近项目中需要集成电话控制功能。设计到一个USB电话录音盒的二次开发。硬件提供商提供了ocx控件。项目为C/S架构系统,客户端使用了WPF技术。所以本文重点分析,在WPF中如何引用第三方提供的ocx控件。
技术准备
ocx控件的本质
- 可以理解为一种基于COM的用户控件
- 不能独立运行
- 可以有多种语言编写,包括c++,java等
- 使用前必须注册,打包应用程序时,最好将控件放到部署目录中,然后注册
- ActiveX是OCX 的高级形式(也许把它看作OLE的较简单形式更合适)
- ActiveX也可能是dll类型
如何查看本机已注册的ocx控件
- 使用绿色软件【RegDllView】可以查看本机注册的所有的dll和ocx。
- 有些ocx可以通过【RegDllView】直接卸载,右键-》删除选定文件所有项。无法删除时,使用cmd命令行删除或者已管理员身份运行【RegDllView】。
如何注册和卸载ocx控件
注册命令: regsvr32 ocx的路径
注解命令: regsvr32 /u ocx的路径
- PS:
- 使用管理员身份登录cmd
- 同一个ocx控件,只能注册一次,即使你使用不同的注册路径。并且注册的路径永远是第一次注册的路径
WPF中使用ocx控件
注册ocx控件
在CMD命令行了,执行注册命令。
项目中可以将OCX控件拷贝到软件exe目录下,然后编写一个bat脚本进行注册,将脚本放到ocx相同目录运行即可。
@echo offecho 如果 Windows 7 下注册失败请右击本批处理文件选择以管理员方式运行cd /d "%~dp0"regsvr32 "你的名字.ocx"pause
生成相应的dll,并在项目中引用
用管理员身份使用VS的开发人员命令提示工具,调用AxImp
虽然显示的生成目录为:c:\windows\system32。实际中,我本机的输出目录C:\Windows\SysWOW64
另外:一开始我使用的是 VS2015 X64 X86兼容工具命令行,总是报错
使用WindowsFormsHost包装控件实体
ocx控件不能在WPF中直接使用,需要使用WindowsFormsHost包装控件实体
AxUSBPHONECTRLLib.AxUsbPhoneCtrl usbPhone = new AxUSBPHONECTRLLib.AxUsbPhoneCtrl();((System.ComponentModel.ISupportInitialize)usbPhone).BeginInit();System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost(){Child = usbPhone}; ((System.ComponentModel.ISupportInitialize)usbPhone).EndInit();this.grid.Children.Add(host);
使用System.ComponentModel.ISupportInitialize初始化控件实体
如果你不需要ocx的界面,只使用控件的功能,代码可以简化为:
AxUSBPHONECTRLLib.AxUsbPhoneCtrl usbPhone = new AxUSBPHONECTRLLib.AxUsbPhoneCtrl();((System.ComponentModel.ISupportInitialize)usbPhone).BeginInit();new System.Windows.Forms.Integration.WindowsFormsHost(){Child = usbPhone}; ((System.ComponentModel.ISupportInitialize)usbPhone).EndInit();
将ocx控件复制到exe目录中(也可以在项目中直接添加,生成项目时,会自动拷贝)
一定要将ocx控件复制到exe目录中。刚开始我没有复制ocx,总是报错:
ps
- 项目中一定要多思考,出现问题要去分析原因。定位问题也是一种能力。
阅读全文
0 0
- WPF应用ocx控件
- WPF 引用OCX控件
- OCX和DLL的区别--OCX控件的应用
- 串口通讯控件Mscomm32.ocx的应用
- COM高级应用-ActiveX控件(OCX) 小记
- WPF之Button控件应用
- WPF之Button控件应用
- C# WPF ListView控件应用
- WPF OCX(转)
- WPF Toolkit chart控件的应用范例
- WPF中应用toolkit Chart控件安装
- WPF控件的一些特殊应用
- OCX 控件注册
- OCX控件注册
- 简单ocx控件制作方法
- 什么是OCX控件
- OCX控件注册
- Javascript调用OCX控件
- 在Windows下将python中scikit learn的模型转化为PMML文件
- Linux修改环境变量
- 解决Hbuilder打包的app返回键直接退出
- bzoj 2440: [中山市选2011]完全平方数(二分,容斥,莫比乌斯反演)
- Android系统中获取内部缓存的一种方法
- WPF应用ocx控件
- seq 详解
- 后端云Bomb的使用
- HTML5_节点对象-事件穿透
- Springmvc中配置Quartz,实现任务实时调度
- TreeMap源码分析
- ffmpeg转码参数解析
- Python切片与迭代总结
- C语言细节