MyException - 我的异常网
当前位置:我的异常网» VB » 怎样将小弟我程序中要用的.ocx控件隐藏起来或整合进

怎样将小弟我程序中要用的.ocx控件隐藏起来或整合进程序中

www.MyException.Cn  网友分享于:2013-03-03  浏览:26次
怎样将我程序中要用的.ocx控件隐藏起来或整合进程序中?
如题。谢谢。

------解决方案--------------------
GOOGLE 搜索 "VB 金蝉脱壳 "
------解决方案--------------------
res文件,。

------解决方案--------------------
把OCX代码整合到模块中去就可以了
------解决方案--------------------
放在资源中,需要时解出,并动态引用
------解决方案--------------------
在用VB编程中合理的使用第三方控件,往往能够事半功倍。但是使用第三方控件也有不好的地方,那就是为了保证程序正常运行,必须使程序能够在系统目录或程序目录下找到所用的第三方控件。要做到这一点通常有两种办法:一是把控件和程序制成一个压缩包发行,这样的缺点是有可能导致在程序传播过程中丢失控件文件。二是制作安装程序,缺点是制作过程烦琐。而且上面两种办法也不符合绿色软件的要求。所谓的绿色软件是指软件只有单个可执行文件且无须安装,目前很受用户欢迎。那么有没有办法在使用了第三方控件的情况下实现绿色软件梦呢?答案是有。

  做法是,将第三方控件以自定义资源文件方式保存在程序中,程序运行之后使用控件之前将所用到的控件生成到该程序目录下,完成控件从可执行文件中的金蝉脱壳。

  具体做法如下:

  第一步:将要用到的控件拷贝到当前工程目录下,右键单击该控件,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少K,以备编程使用。

  第二步:引用并正常使用该控件。

  第三步:新建资源文件加入工程,在资源文件编辑器中添加所使用的第三方控件为自定义资源(CUSTOM),资源号使用默认的101。如果使用了多个控件则分别添加到资源文件的101、102......资源项中,脱壳代码也要作相应的修改。

  第四步:编写控件脱壳代码,使其读取资源文件的数据,在程序当前目录下生成控件。

  代码如下:

Private Const OCXSIZE = 57344 '欲生成的控件大小是57344Byte,名字为CoolToolBar.ocx

Sub Main()
 Dim Ocx() As Byte 'OCX是个Btye类型的数组
 Dim Counter As Long
 Ocx = LoadResData(101, "CUSTOM ") '将自定义资源中101号资源读入数组OCX
  '注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为 "CUSTOM "而不是帮助所说的数字10

 If Right(App.Path, 1) = "\ " Then '读取程序所在路径,判断是否为根目录并分别处理
   '程序在根目录下
  If Dir(App.Path & "CoolToolBar.ocx ") = " " Then '程序路径下有无控件,无则生成控件
    '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
   Open App.Path & "CoolToolBar.ocx " For Binary As #1
   For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
    Put #1, , Ocx(Counter)
   Next Counter
   Close #1
  End if
 Else
   '程序不在根目录下
  If Dir(App.Path & "\CoolToolBar.ocx ") = " " Then '程序路径下有无控件,无则生成控件
    '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
   Open App.Path & "\CoolToolBar.ocx " For Binary As #1
   For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
    Put #1, , Ocx(Counter)
   Next Counter
   Close #1
  End if
 End if
 Form1.Visible = True '主程序所用控件已经生成,显示主窗体,进入主程序。
End Sub

  注意:将以上代码作为一个模块添加到工程中,并在工程-工程属性设置中将启动对象选为Sub Main,即上面的脱壳代码。然后编译生成EXE文件,将该EXE文件拷贝到其他没有安装所用控件的计算机上运行一下看看是否实现了控件携带之金蝉脱壳。如果是那么OK!以上为使用一个控件的情况,使用多个控件方法基本相同,不在赘述。

文章评论

10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
那些争议最大的编程观点
那些争议最大的编程观点
10个调试和排错的小建议
10个调试和排错的小建议
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员必看的十大电影
程序员必看的十大电影
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
代码女神横空出世
代码女神横空出世
程序员都该阅读的书
程序员都该阅读的书
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Java程序员必看电影
Java程序员必看电影
编程语言是女人
编程语言是女人
程序员的鄙视链
程序员的鄙视链
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
每天工作4小时的程序员
每天工作4小时的程序员
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
老程序员的下场
老程序员的下场
 程序员的样子
程序员的样子
中美印日四国程序员比较
中美印日四国程序员比较
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
为什么程序员都是夜猫子
为什么程序员都是夜猫子
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
我的丈夫是个程序员
我的丈夫是个程序员
旅行,写作,编程
旅行,写作,编程
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
如何成为一名黑客
如何成为一名黑客
一个程序员的时间管理
一个程序员的时间管理
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
总结2014中国互联网十大段子
总结2014中国互联网十大段子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
鲜为人知的编程真相
鲜为人知的编程真相
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
漫画:程序员的工作
漫画:程序员的工作
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有