摘要: 在程序执行期间它必须生成代码进行必要的维护操作。相反地由于解释程序可以在其自己的数据结构中直接维护环境,因而它的任务就很简单.由于代码区在执行之前是固定,所以在编译时所有代码的地址都是可计算的典型的组织是将这个存储器分为栈( s t a c k )区域和堆( h e a p )区域.运行时环境:自变量(参数)空间用作薄记信息的空间,它包括了返回地址用作局部数据的空间用作局部临时变量的空间处理器寄存器也是运行时环境的结构部分. 阅读全文
posted @ 2009-08-04 17:12 dzqabc 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以DLL(动态连接库)为载体进行封装,VC6中有三种形式的MFC DLL可供选择,即Regular statically linked to MFC DLL(标准静态链接MFC DLL)、Regular us 阅读全文
posted @ 2009-08-04 14:38 dzqabc 阅读(1337) 评论(0) 推荐(0) 编辑
摘要: 如何从dll文件导出对应的lib文件? Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。 1、在命令行执行: dumpbin /exports yourdll.dll > yourdll.def 2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如: EXPORTS; fn1; fn2; 3、在命令行执行: lib /def:yourdll.def /machine:i386 /out:yourdll.lib//为无LIB的DLL制作LIB函数符号输入库本文介绍 阅读全文
posted @ 2009-08-04 13:46 dzqabc 阅读(15274) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,COM组件编程中,QueryInterface实现的接口之间的查询,通过这个接口,我们可以获取该组件中其他的接口。但是,QueryInterface实现的原理,并不是大家都很清楚,也没有哪本书仔细讲了这点。我将个人心得写下来,供有需要的人查看。首先,我们看一下基本的COM实现。一般来说,COM是 通过多继承实现多个接口,如下图而对应的QueryInterface实现如下HRESULT实现类::QueryInterface(constIID&iid,void**ppv)...{ if(iid==IID_IUnknown) *ppv=(接口一*)this; else if(ii 阅读全文
posted @ 2009-08-04 12:50 dzqabc 阅读(1105) 评论(0) 推荐(0) 编辑