《魔高一丈2.0》开发实例
2006-07-19 11:35:31 来源:WEB开发网核心提示: 第3步、在项目中加入Mousehook.cpp文件在CMousehook里封装其中加入必要的共享数据以及SetWindowsHookEx、UnhookWindowsHookEx等函数——这些API函数具体的参数的类型跟作用解释在程序代码的注释里有(网上也到处都有,我
第3步、在项目中加入Mousehook.cpp文件在CMousehook里封装其中加入必要的共享数据以及SetWindowsHookEx、UnhookWindowsHookEx等函数——这些API函数具体的参数的类型跟作用解释在程序代码的注释里有(网上也到处都有,我也是从网上抠下来的。一个声音高叫着——当然MSDN里也有。),而把它们写在文章里就不免有骗取稿费之嫌了。我只是想解释一下为什么需要使用一个共享的数据段,如下:
#pragma data_seg("mydata") //编译器识别的指令用以在虚拟内存中开辟一个数据段存放该指令下面的数据
HINSTANCE glhInstance=NULL; //DLL实例(或者说模块)的句柄。
HHOOK glhHook=NULL; //鼠标钩子的句柄。
HWND GlobalWndHandle[100]={NULL,.....};//用来存放被隐藏的窗口的句柄,以数组的形式保存。
//该数组必须初始化,原因见下文。我以“......”省略。
UINT Global_i=0; //用以在循环中序列化窗口数组的变量。
BOOL Condition1=0; //用以记录左键按下或释放的标志变量。
BOOL Condition2=0; //用以记录右键按下或释放的标志变量。
BOOL HideOrVisitableFlag=0; //用以标识当再次有左、右键同时按下的情况发生时是隐藏还是显示窗口。
BOOL Check1=0; //用来表示控件Check1状态的标志变量。
BOOL Check2=0; //用来表示控件Check2状态的标志变量。
BOOL Check3=0; //用来表示控件Check3状态的标志变量。
#pragma data_seg() //与#pragma data_seg("mydata") 首尾呼应表示该数据段的结束。
加入上述数据段以后还应在项目里插入一个“Mousehook.def”文件,用:"SECTIONS mydata READ WRITE SHARED"将mydata数据段设置为一个可读写的共享段。在程序里加入预编译指令,或在开发环境的项目设置里也可以达到设置数据段属性的目的,我就不一一赘述了。
更多精彩
赞助商链接