QT进程外COM组件之OCX控件华丽转身
2017-01-24 09:00
274 查看
项目上遇到问题:
1.32位进程空间不足,需要OCX分享自己的进程空间,或者OCX存在内存泄漏又无法控制 当然全部自己代码也可以考虑用64位进程解决
2.所调用的OCX不稳定 如客户端程序开发 ,如调用了不通的厂商的OCX且不通厂商的OCX的质量不统一,此时若OCX不稳定的话,就容易导致整个EXE跟着崩溃掉,导致所有的业务全部宕机,WEB页面调用OCX也会存在同样的问题。
如上情况:就可以考虑QT的进程外的COM组件的模式
若是MFC开发的OCX空间的话,若要支持进程外OCX的话,比较麻烦,合理的做法是用QT封装一层COM壳。
这种模式在操作系统侧面微软这边不通的控件的调用普遍,对于需要类似处理的模块采用这种模式倒是不失为一个比较理想的策略。
使用测试发现:
1.切换之后 信令传递比一个进程内稍慢 需要进一步研究问题原因。
2.若EXE进程中new多个COM组件的实例 COM组件只有一个进程。这点虽然暂时没有研究什么机制但是也不错的形态
WEB页面调用的ocx是否切换为COM组件之后是否支持调用,有待大神们验证。
提供一个思路处理问题
1.32位进程空间不足,需要OCX分享自己的进程空间,或者OCX存在内存泄漏又无法控制 当然全部自己代码也可以考虑用64位进程解决
2.所调用的OCX不稳定 如客户端程序开发 ,如调用了不通的厂商的OCX且不通厂商的OCX的质量不统一,此时若OCX不稳定的话,就容易导致整个EXE跟着崩溃掉,导致所有的业务全部宕机,WEB页面调用OCX也会存在同样的问题。
如上情况:就可以考虑QT的进程外的COM组件的模式
若是MFC开发的OCX空间的话,若要支持进程外OCX的话,比较麻烦,合理的做法是用QT封装一层COM壳。
这种模式在操作系统侧面微软这边不通的控件的调用普遍,对于需要类似处理的模块采用这种模式倒是不失为一个比较理想的策略。
使用测试发现:
1.切换之后 信令传递比一个进程内稍慢 需要进一步研究问题原因。
2.若EXE进程中new多个COM组件的实例 COM组件只有一个进程。这点虽然暂时没有研究什么机制但是也不错的形态
WEB页面调用的ocx是否切换为COM组件之后是否支持调用,有待大神们验证。
提供一个思路处理问题
相关文章推荐
- 如何注册和注销进程外 COM 组件(ActiveX EXE)
- 实战COM(03)----创建一个进程外组件
- C#调用COM组件后退出Excel进程
- Qt控件精讲三:单元组件
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
- 如何在Borland Delphi2005中安装OCX、COM 类组件?
- 进程外COM组件的单实例化和Register-free
- COM/DCOM开发练习之远程进程外组件实例
- COM/DCOM开发练习之进程外组件实例
- 组件,控件,com,插件,ActiveX之间的不同
- Qt控件精讲六:显示组件
- 实战COM(02)----创建一个进程内组件
- 控件、组件、插件、COM、ActiveX
- 如何实现单例的进程内COM组件
- 组件,控件,com,插件,ActiveX,这五个有什么区别呢?
- delphi7/2006中导入ocx控件常常不能显示在组件栏中的解决办法
- 用C#编写一个进程外的COM组件
- 城市地图, 军事地图, 矿山地图, 电力地理, 电子地图, 制图, 编辑, OCX控件, VC++源代码组件库
- COM进程外组件的实现vc++
- 避免在MFC程序中调用进程外Com组件出现“由于另一个程序正在运行...”的解决方案