(1).选择MFC   AppWizard(DLL)创建项目ActiveKey,并选择MFC   Extension   DLL   
  (共享MFC拷贝)类型。   
    
    (2).插入新文件ActiveKey.h,在其中输入如下代码:   
    
     #ifndef   _KEYDLL_H   
     #define   _KEYDLL_H   
    
     class   AFX_EXT_CLASS   CKeyHook:public   CObject   
     {   
      public:   
   CKeyHook();   
   ~CKeyHook();   
   HHOOK   Start(); //安装钩子   
   BOOL   Stop();   //卸载钩子   
     };   
     #endif   
    
    (3).在ActiveKey.cpp文件中加入声明"#include   ActiveKey.h"。   
    
    (4).在ActiveKey.cpp文件中加入共享数据段,代码如下:   
    
     //Shared   data   section   
     #pragma   data_seg("sharedata")   
     HHOOK   glhHook=NULL;   //钩子句柄。   
     HINSTANCE   glhInstance=NULL;   //DLL实例句柄。   
     #pragma   data_seg()   
    
    (5).在ActiveKey.def文件中设置共享数据段属性,代码如下:   
    
     SETCTIONS   
     shareddata   READ   WRITE   SHARED   
    
    (6).在ActiveKey.cpp文件中加入CkeyHook类的实现代码和钩子函数代码:   
    
  //键盘钩子处理函数。   
  extern   "C"   LRESULT   WINAPI   KeyboardProc(int   nCode,WPARAM   wParam,LPARAM   lParam)   
  {   
     if(   nCode   >=   0   )   
     {   
     if(   wParam   ==   0X79   )   //按下F10键。   
            {   
                      //(省略处理代码)   
           }   
     }   
     return   CallNextHookEx(glhHook,nCode,wParam,lParam);   
  }   
    
     CKeyHook::CKeyHook(){}   
     CKeyHook::~CKeyHook()   
     {    
     if(   glhHook   )   
  Stop();   
     }   
     //安装全局钩子。   
     HHOOK   CKeyHook::Start()   
     {   
  glhHook   =   SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);//设置键盘钩子。   
  return   glhHook;   
  }   
     //卸载全局钩子。   
     BOOL   CKeyHook::Stop()   
     {   
     BOOL   bResult   =   TRUE;   
   if(   glhHook   )   
     bResult   =   UnhookWindowsHookEx(glhHook);//卸载键盘钩子。   
     return   bResult;   
     }   
    
    (7).修改DllMain函数,代码如下:   
    
     extern   "C"   int   APIENTRY   
     DllMain(HINSTANCE   hInstance,   DWORD   dwReason,   LPVOID   lpReserved)   
     {   
  //如果使用lpReserved参数则删除下面这行   
  UNREFERENCED_PARAMETER(lpReserved);   
    
  if   (dwReason   ==   DLL_PROCESS_ATTACH)   
  {   
    TRACE0("NOtePadHOOK.DLL   Initializing!\n");   
       //扩展DLL仅初始化一次   
    if   (!AfxInitExtensionModule(ActiveKeyDLL,   hInstance))   
  return   0;   
    new   CDynLinkLibrary(ActiveKeyDLL);   
        //把DLL加入动态MFC类库中   
    glhInstance   =   hInstance;   
    //插入保存DLL实例句柄   
  }   
  else   if   (dwReason   ==   DLL_PROCESS_DETACH)   
  {   
    TRACE0("NotePadHOOK.DLL   Terminating!\n");   
    //终止这个链接库前调用它   
    AfxTermExtensionModule(ActiveKeyDLL);   
  }   
  return   1;   
     }   d:\program files\microsoft visual studio\myprojects\fuckyouthen\fuckyouthen.cpp(4) : fatal error C1083: Cannot open precompiled header file: 'Debug/fuckyouthen.pch': No such file or directory