大致原理是,用户申请 1KB 全局参数缓冲区,用于在调用 Windows API 时,与 API 之间传递一切参数与返回值;
然后,改造一个VFP废弃函数 OemToAnsi,用于注册回调;
至于说它是“伪回调函数”,我们知道,VFP 并无“函数指针”概念,我们注册的“回调函数”,严格说来,其实只是“回调函数分发器”。
说到这个“分发器”,一开始确实绕了不少弯路!
最初的想法,是手搓一条 P-Code 代码,然后 call P-Code 的执行主入口,瞒天过海地直接执行用户注册的 VFP 函数。
试了很多次,皆失败。
这才反应过来:
VFP 的整个 P-Code 体系,错综复杂,涉及到的结构体、上下文,外人不可能搞得清楚明白;
若阿猫阿狗都能轻易执行一条 P-Code 代码,那么,他便有能力随随便便执行任意数目的 P-Code 了!
这相当于掌握了VFP字节码的全部核心机密!——这可能么?!显然这绝不可能的!
于是,只好灰溜溜地放弃了这个企图。
退而求其次,利用 COM 接口,相对而言,就比较简单了。
汇编代码,令人联想到三十多年前的面条代码,东转西跳的,完全没有“面向对象”的优雅别致;
而且,每一行代码都精打细算,一般50字节左右,就能写出一个完整函数,100字节,基本上就能完成一项工作啦!
这对于写一句“Hello world!”,编译出来动辄就几十、上百KB的现代编程语言而言,简直恍若隔世!