求大神指教一个HOOK呼出窗口,外挂呼出窗口这样一个过程,解决方法

求大神指教一个HOOK呼出窗口,外挂呼出窗口这样一个过程,
C/C++ code
CWnd *pCWnd=CWnd::GetForegroundWindow();   

LRESULT CALLBACK GameProc(
  int code,       // hook code
  WPARAM wParam,  // virtual-key code  VK_HOME
  LPARAM lParam   // 31位为0表示被按下
)
{
    if((wParam==VK_HOME)&&((lParam&(1<<31))==0))
    {
        AfxMessageBox("按下HOME键");
        if(newmain==NULL) //newmain是一个CDialogmain的全局指针变量
        {
         newmain=new CDialogmain;
         newmain->Create(IDD_DIALOG1,pCWnd);
         newmain->ShowWindow(SW_SHOW);
        }
    }
    else
    {   
        //根据当前呼出窗口的状态来显示或隐藏呼出窗口    
            newmain->ShowWindow(newmain->IsWindowVisible() ? SW_HIDE : SW_SHOW);   
        }   

   //add your code to process anything
    return CallNextHookEx(0,code,wParam,lParam);
}
//安装勾子

#define gamecaption "MSDN Library - October 2001"
void SetHook()
{
    AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState();

    HWND hwnd=FindWindow(NULL,gamecaption);
    if(hwnd=NULL)
        AfxMessageBox("未发现游戏");
    DWORD tid=GetWindowThreadProcessId(hwnd,NULL);
    //安装线程勾子
    ::SetWindowsHookEx(WH_KEYBOARD,&GameProc,::GetModuleHandle("gametest.dll"),tid);
}


int CGametestApp::ExitInstance()
{
    delete newmain;
    newmain=NULL;
    return CWinApp::ExitInstance();

}



窗口出不来,,伤不起,求指教,,

------解决方案--------------------
调用钩子代码如下:
C/C++ code

    m_hInstance = NULL;   //Dll句柄
    m_INHook = NULL;      //设置钩子函数入口指针
    m_UIHook = NULL;      //卸载钩子函数入口指针

    HWND TestWind = NULL;
    remove("C:\\keys.txt");    
    if ((TestWind = ::FindWindowEx(NULL, 0, 0, "TestForHookWin")) == NULL)
    {
        AfxMessageBox("未发现指定窗口");
    }
    else
    {
        m_hInstance = LoadLibrary("KeyBoardHook.dll");
        if (m_hInstance)
        {
            m_INHook = (InstallHook)GetProcAddress(m_hInstance,"InstallHook");
            m_UIHook = (UnInstallHook)GetProcAddress(m_hInstance,"UnInstallHook");
            if (m_INHook != NULL)
                m_INHook(TestWind);
        }
    }