1 / 12
文档名称:

《真是想不到系列》.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《真是想不到系列》.doc

上传人:xxj16588 2016/6/10 文件大小:0 KB

下载得到文件列表

《真是想不到系列》.doc

相关文档

文档介绍

文档介绍:《真是想不到系列》《真是想不到系列》《真是想不到系列》每次看大师的东西到了精彩之处,我就会拍案叫绝: " 哇噻,真是想不到! " 。在经过很多次这种感慨之后,我发现只要我们动了脑筋, 我们自己也能有让别人想不到的东西。于是想到要把这些想不到的东拿出来和大家一起分享, 希望抛砖引玉, 能引出更多让人想不到的东西。真是想不到系列之一: VB 到底为我们做了什么? 关键字: VB 、底层、 WIN32 、 API 、 COM 难度:中级要求:熟悉 VB ,会用 VC 调试器,了解 WIN32 SDK 、 COM 。 VB 一直以来被认为有以下优缺点: 优点是上手快、开发效率高; 缺点是能力有限, 运行效率低。这正是有些软件把 VB 做为首选语言, 而有些软件肯定不会用 VB 做的原因。而很多 VC, DELPHI 的程序员都认为 VB 里搞开发不自由,它让我们做事变容易的同时,也让我们发挥的余地越来越小。的确, 简单和功能强大这两者本身就是一对矛盾。那怕一行代码不写,仅仅起动运行一个空窗体这样简单动作, VB在底下就为我们做了大量复杂的工作( 决不仅仅是注册窗口类、显示窗口、起动消息循环这么简单), 这些工作对程序员是透明的。我们在感谢 VB 开发小组对我们程序员体贴入微的同时,不禁也要责怪为什么在文档中对这些底层的动作只字未提, 虽然这些动作对最终的程序也许并无影响, 但我们拥有知情权, 更何况这些动作有时的确会影响我们的工作( 我将在本系列后面的《 VB 多线程》中谈到这种影响)。然而, 所有希望从本文得到" 未公开技术秘密" 的朋友你将会很失望, 因为我能够知道的和你一样多, 我们所能做的一切就是站在外面来猜VB 在里面做了什么?所以我决不是要带大家一起去将VB 反向工程,而是想通过猜想 VB 的内部工作来将一些原来比较模糊的概念搞清楚。作为一个系列的第一篇文章, 它的目的是为了后面的深入打下基础, 所以我会在需要的时候指出我们必须掌握的知识点, 如果你不清楚,请及时地学****相关书籍来补课,具体见《参考书目》。最后, 要声明我在本文中所做的各种实验和推断仅是我个人的观点,不能保证其正确性,并且不承担任何相关的法律责任。好, 开始吧! 首先准备好我们的武器, 我下面要使用的工具主要有: VB6 中文企业版+SP5 (废话),还有 SPY++ 、 Dependency Wal k 和 OLE Viewer (以下简称 SPY 和 DEPEND 和 OLEVIEW , SPY 在 VB 光盘 mon\tools\vb\ 下的 SPY 目录中, OLEVIEW 是其下 OLETOOLS 目录中的 ,注意其下还有一个 功能类似, 不过本文所指的是 ,还 Denpend 在其下的 Unsupprt\DEPEND 里)。还要用用 VC (上面提的工具在 VC 里有), 因为我们还要看看 VB 生成的代码,搞 VB 高级开发的朋友一定要会用 VC 调试器,懂点汇编更好。当然,本文的重点不在这儿,所以没有 VC 也不要紧。打开 VB6 新建一标准 EXE 工程,在" 工程"->" 引用" 对话框里应该已有四个引用, 简单点就是:1、 Visual Basic For Application(VBA) 2、 VB 运行时对象库 3、 VB 对象库 4、 OLE 自动化。前面三个是任何 VB 工程都必须的, 你想不要都不行, 不信你试着去掉对它们的引用。那么这三个核心类型库各有什么用, 在最终生成的可执行程序中扮演怎样的角色,这是本文要分析的第一个问题。 1) VB、 VBA 、 VBS 的区别你搞清楚了吗? 首先 VBS 不应该和 VB、 VBA 放在一起比较, 它是微软按照自己定义的 ActiveX Scripting 规范完全从头开始写成的脚本语言, 虽然它的语法结构和 VB 非常相似,但 VBS 仅仅依靠自动化对象来扩充其功能(只有后期绑定),它不能用 implements 来实现接口,不可能在 VBS 里直接使用 API , 没有 VarPtr 这样能得到指针的函数,而 VBS 缺少的这些功能正是 VB和 VBA 所特有的。当然, 这不是说 VBS 不如 VB 或 VBA , Windows 已经为 VBS 提供了足够强大的功能, 我们可以用 VBS 组件,而且借自动化对象的能力 VBS 可以说能力无限, 所以有病毒用 VBS 来写, 对程序员来说 VBS 最重要的功能莫过于可以给自己的软件提供宏功能, 就象 VC 中提供的 VBS 宏功能那样。注意, VBS 是 Free 的, 这和在 Office 中使用 VBA 来提供宏功能不同, 要集成 VBA 需要价格不低