Giter Site home page Giter Site logo

icode's Introduction

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 中)通过使用同一个代码文件保持同步。

随手画的一张图:

其他

icode's People

Contributors

liuzikai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

icode's Issues

支持一下vb6薪火相传

Basic算是我启蒙的语言,自然VB6是我从文曲星跨入电脑正规编程的最佳桥梁。

希望楼主的这个软件能够帮助更多的人通过VB学习编程。

很多人吐槽VB,但是我认为,用VB写不好程序的人,用什么都写不好。

因为只有你在简陋的环境下,才会更有可能锻炼自己的大脑,去实现手头没有的功能。

最后,祝愿顺利!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.