【文章标题】: 用汇编语言给XP记事本添加“自动保存”功能
【文章作者】: newjueqi
【作者邮箱】:zengjiansheng1@126.com
【作者QQ】:190678908
【使用工具】: OD, LordPE,eXeScope
【操作平台】: XP-SP2
【作者声明】: 本人平时一般的文字处理都是用记事本(用Word好像大材小用了),电脑自从拿去大修后有时候会莫名其妙的重启,弄得经常重写(本人常常忘记保存^-^),于是想给记事本增加类似于Word的自动保存功能,以图个方便。失误之处敬请诸位大侠赐教!
具体的思路:其实自动保存功能就是程序隔一段时间保存一次,而记事本程序是自带了保存功能的,所以只要编程安装一个记时器,每隔一段时间模拟点击“保存菜单”,就能实现自动保存,最后退出时把记时器撤销。
首先,用eXeScope给记事本增加两个菜单项“自动保存”“关闭自动保存”,如图1所示:
图1
其中,“自动保存”的菜单ID是8 ,“关闭自动保存” 的菜单ID是13。
完成后的菜单选项如图2所示:
图2
本次修改要用到3个window API函数: SetTimer, KillTimer , SendMessageA, 这3个API没包括在记事本的输入表里,所以要用LordPE 在输入表里增加这3个API。
用LordPE打开记事本程序,依次选择Direction->输入表的“…”按钮->点击右键->add import,出现如图3的界面,就可以在输入表里增加新的API
图3
完成后就新增了一个区段Slivana如图4,放的就是新的IID数据,如图4所示
图4
添加完新的API后又有一个新的问题了,那就是要确定新的API地址,这个在PEDIY的过程中是要自己解决的,而平时是编译器帮忙的。获得API地址有两个方法:
(1)