朋友找我帮原来的软件加一个小功能,程序是用VB.NET 写的。
软件需要与外部串口设备通信,一只带串口功能的压力表。
应该时间周期很急,所以串口部分我就直接用厂家提供的VB DEMO 写了个OCX控件给 .NET调用。
OCX 的制作过程参考我的这篇文章 http://my.oschina.net/caomenglong/blog/380029
软件制作完成用用VS做了一个安装包给朋友,安装包内已经包含了OCX控件。安装过程中会自动注册。
朋友去给客户安装,发现提示 『 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 』软件压根就打不开。
于是找到我紧急修复。
昨晚去他家里搞到夜里压根没有解决,无从下手,脑子也很晕晕的,白天可能是工作是太辛苦了。设备都带回家,今晚好好搞。
因为上面文章是我2年前做项目使用的OCX过程,我打包安装一切正常,不过我都是在XP上安装的。
百度搜结果,翻墙搜结果,很多类似的都说要关闭WIN7 DEP,类型这样的文章:http://blog.sina.com.cn/s/blog_6ca907a60100lxar.html
http://blog.csdn.net/hzfu007/article/details/6445162
我关闭DEP后 发现压根就没有用,网上好多人也反应关闭后没法用。
就这样各种折腾了近4小时精疲力尽。还是没办法解决问题。
我准备的2台电脑,一台开发机一切正常,另一台干净的WIN7 运行报错。实在没办法就尝试用VB做一个winfrom 引用那个ocx看行不行!!!于是到新电脑上跑VB程序!!!居然发现提示 串口控件不存在!!!!我勒了个去!!!
原来是我这个OCX文件 里面有串口组件,我VS打包的时候忘记打包VB 的串口组件 OCX文件了!!怪不得,.NET界面载入的时候加载自己做的OCX会报错,原来自己做的OCX中还有配套的OCX控件没一起打包。
于是对代码加入相应缺少的OCX ,问题终于解决了。
网上没有一个人这样提醒,希望我的经历能够给其他遇到问题的小伙伴有启发,不一定是DEP的问题哦!
2015-06-27 11:48 非常的累