iCode

2025-12-10 0 167

iCode: an addin for Microsoft Visual Basic 6.0

重新整理于 2019/11/09

这是一个年代久远的 Project…我在小学时接触了 VB6,陆陆续续也写了不少程序。升初中的那个暑假,似乎是怀着“打算学习新的语言了,最后用 VB 给 VB6 写个插件当告别吧“的想法(现在看来好中二啊 hhh),开始了这个工程。然而它并不是我预想的”告别之作“,而是伴随了我整个初中三年,从最初的“小插件”,逐步拓展到了一个庞大的工程,即使到了现在,可能也是我写过的最大的工程了吧(笑)

Microsoft Visual Basic 6.0,一个年纪比我还要大的 IDE/语言,在我编写这个程序之时,VB6 已经开始淡出人们的视野了,而现在,大概已经只存在记忆中了吧。在高三时,自觉不会再维护这个项目了,于是抽空完善了一下文档,并在百度贴吧 VB 吧发布了程序和源码。由于 VB 用户已是寥寥无几,它并没有引起多大的关注,这一点我也已自知。

现在回想起来,这个工程让我学到了很多,即使是自己摸索,数年下来,虽然不算系统,也学到了不少知识,例如:

  • VB6 “类”的使用
  • VB6 外接程序 Addin 架构、接口等
  • WIN32 Hook、回调与接口、DLL 注入、内存读写
  • WIN32 API、消息、事件
  • WIN32 程序 Resource
  • 对程序架构、单元测试的初步理解
    当然,对于专业的 Windows 开发者而言,这些可能不过是些皮毛而已。

现在这个程序已经停止维护,我也不会提供技术支持了(我也差不多忘光了 hhh),程序有不少 Bug,代码风格也不算好。考虑到现在基本没有人用 VB6 了,这个 Addin 本身也没有什么实用价值了,但如果其中的一些技术点能够给您提供参考,那它也算是发挥了它的价值了 🙂

Develop/iCode 开发者指南.docx 是我在发布源码时编写的文档,其中一些内容整理如下。

Addin 外接程序

VB6 外接程序(Addin)是使用 VB 提供的接口增强 IDE 上实现特定功能的插件。工程主体是 ActiveX DLL,调用了特定的部件(Microsoft Add-In Designer 等),这些部件将提供有限的接口用于控制IDE行为。本工程中还使用了 Hook、内存修改等。接口与流程概述详见 docx 文档。

程序部件

Linker – 编译强化

编译强化工具。自动替换 EXE 文件图标,支持高清图标;自动插入 Manifest 文件,以实现自动申请 UAC 权限、通用控件跟随系统主题等功能。

TipsBar – 工作区标签栏

为 IDE 的工作区增加标签栏,方便在各个窗口间切换。

AutoComplete – API工具

集合 WIN32 API 和 GDI+ 方法、常数、类型,自动插入声明。

CodeIndent – 代码缩进整理

优化的代码缩进整理工具,附带简单的代码错误分析。

CodeStatistic – 代码统计

细致全面的代码统计工具。

ColorCode – 代码色彩修改器

通过修改内存实现 IDE 配色自定义,突破 VB 单调配色,附带方案导入、导出功能。

IDEEnhancer – IDE工具

提升效率。

Windows – 文件窗口重布局

重新布局文件窗口控件。

目录结构

  • Components:各个组件的工程文件。
  • Public:各个组件公用的工程文件。
  • iCode:iCode主启动器的工程文件
  • Develop:开发参考文档、辅助测试工程。
  • Documents:相关文档和资源。
  • Dlls:编译输出目录
  • Setup:安装、卸载程序、帮助文件的工程、制作工具、成品等。
  • CleanUp.bat:用于清理各种tmp、log文件,以及 VB 崩溃可能在 Components 文件夹下留下的“工程1.vbp”等文件
  • iCode.vbg是iCode主体工程文件。

工程架构

iCode 的架构修改过多次,现在采用的是各个部件工程独立,启动器(含 Connect)独立另一个工程,启动器工程(称为 A)引用部件工程(称为 B),通过调用类模块的接口实现功能。主要代码都在 B 中编写,A 主要做提供 IDE 实例、提供 Hook 信息等作用。

这样做的好处是方便移植。iCode 由许多组件组成,如果全都在一个工程中编写,会比较混乱,同时不方便调试。要知道,由于用上了 Hook 等,iCode 时常要编译以后再测试,编译其他不必要的组件会浪费许多时间。采用这样的架构,先编写一个部件工程+一个启动器工程,测试完成后,iCode 真正的启动器再引用部件工程,只需添加少量的调用代码即可,如果部件出现问题,也可以通过原启动器调试。

另外,一些公共的方法(主要在 iFunction 中)通过使用同一个代码文件保持同步。

随手画的一张图:

其他

  • Develop/iCode.chm Addin 使用手册
  • Develop/iCode 开发者指南.docx 包含更多研发时的细节,供参考
  • 当年 VB 吧发布帖子:【V1.2+开源】iCode – VB6实用外接程序(AddIn)【vb吧】_百度贴吧(黑历史 hhh)
  • 部分参考文档来源互联网,版权归原作者所有

下载源码

通过命令行克隆项目:

git clone https://github.com/liuzikai/iCode.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 iCode https://www.zuozi.net/33532.html

OX163
下一篇: OX163
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务