关于皮肤预览功能,初版见这篇帖子,存在不少问题【易IDE视觉库 插件】Skin#窗口设计预览插件及源码分享
优化皮肤箱功能(解决初版问题如下)
1、皮肤过多在菜单显示不友好问题(使用窗口代替,增加了皮肤文类)
2、补全皮肤功能功能
3、优化Hook功能,初版中Hook非常粗暴,干扰了IDE正常功能,会造成一些闪退的情况(文末会重点说一下这点的解决方式)
新增工具箱功能(需要注意以下几点)
1、乱七八糟的程序放到指定目录,文件夹分好类,然后启动插件后会自动遍历exe文件
2、对于扫描出来的一些乱七八糟的exe(如 set.exe up.exe等等)可以右键加入黑名单,一劳永逸
3、分类纯粹依靠文件夹名的排序,手动排序暂未实现,视觉库对于tree view的拖拽功能没有重绘,凑活用吧
技术探讨
下面说下如何能在一个进程中精准Hook指定模块(dll)对API的调用,
拿皮肤预览功能来说, 我只需要HookSkin_EL.dll对IsMenu和EnumThreadWindows的调用,这样便可以实现不干扰IDE正常功能,Hook类原理参考了OD,对ESP地址进行判断调用者所属模块(虽然实现了对调用者的判断,奈何不懂汇编,代码中蹩脚的几句汇编指令纯粹个人不成熟的想法,有懂汇编的大佬希望能不吝赐教是否有更好的办法),多说无益,详细实现方法见代码
插件安装方法
1、安装IDE视觉库
2、解压压缩包至易语言安装目录
3、放置皮肤文件至易语言安装目录\assistant\skins
4、放置程序文件至易语言安装目录\assistant\tools