重新整理於2019/11/09
這是一個年代久遠的Project...我在小學時接觸了VB6,陸陸續續也寫了不少程式。升國中的那個暑假,似乎是懷著「打算學習新的語言了,最後用VB 給VB6 寫個插件當告別吧「的想法(現在看來好中二啊hhh),開始了這個工程。然而它並不是我預想的」告別之作“,而是伴隨了我整個初中三年,從最初的“小插件”,逐步拓展到了一個龐大的工程,即使到了現在,可能也是我寫過的最大的工程了吧(笑)
Microsoft Visual Basic 6.0,一個年紀比我還要大的IDE/語言,在我寫這個程式之時,VB6 已經開始淡出人們的視野了,而現在,大概已經只存在記憶中了吧。在高三時,自覺不會再維護這個專案了,於是抽空完善了一下文檔,並在百度貼吧VB 吧發布了程序和源碼。由於VB 用戶已是寥寥無幾,它並沒有引起多大的關注,這一點我也已自知。
現在回想起來,這個工程讓我學到了很多,即使是自己摸索,數年下來,雖然不算系統,也學到了不少知識,例如:
現在這個程式已經停止維護,我也不會提供技術支援了(我也差不多忘光了hhh),程式有不少Bug,程式碼風格也不算好。考慮到現在基本沒有人用VB6 了,這個Addin 本身也沒有什麼實用價值了,但如果其中的一些技術點能夠給您提供參考,那它也算是發揮了它的價值了:)
Develop/iCode 开发者指南.docx
是我在發布原始碼時編寫的文檔,其中一些內容整理如下。
VB6 外接程式(Addin)是使用VB 提供的介面增強IDE 上實現特定功能的插件。工程主體是ActiveX DLL,呼叫了特定的部件(Microsoft Add-In Designer 等),這些部件將提供有限的介面用於控制IDE行為。本工程中也使用了Hook、記憶體修改等。介面與流程概述詳見docx 文件。
編譯強化工具。自動替換EXE 文件圖標,支援高清圖標;自動插入Manifest 文件,以實現自動申請UAC 權限、通用控制項跟隨系統主題等功能。
為IDE 的工作區增加標籤欄,方便在各個視窗間切換。
集合WIN32 API 和GDI+ 方法、常數、型別,自動插入宣告。
優化的程式碼縮排整理工具,附帶簡單的程式碼錯誤分析。
細緻全面的程式碼統計工具。
透過修改記憶體實現IDE 配色自訂,突破VB 單調配色,附帶方案匯入、匯出功能。
提升效率。
重新佈局文件視窗控制項。
iCode 的架構修改過多次,現在採用的是各個部件工程獨立,啟動器(含Connect)獨立另一個工程,啟動器工程(稱為A)引用部件工程(稱為B),透過調用類模組的介面實現功能。主要程式碼都在B 中編寫,A 主要做提供IDE 實例、提供Hook 資訊等作用。
這樣做的好處是方便移植。 iCode 由許多元件組成,如果全都在一個工程中編寫,會比較混亂,同時不方便調試。要知道,由於用上了Hook 等,iCode 時常要編譯以後再測試,編譯其他不必要的元件會浪費許多時間。採用這樣的架構,先編寫一個部件工程+一個啟動器工程,測試完成後,iCode 真正的啟動器再引用部件工程,只需添加少量的調用代碼即可,如果部件出現問題,也可以通過原始啟動器調試。
另外,一些公共的方法(主要在iFunction 中)透過使用同一個程式碼檔案保持同步。
隨手畫的一張圖:
Develop/iCode.chm
Addin 使用手冊Develop/iCode 开发者指南.docx
包含更多研發時的細節,供參考