试试在dll中完成一切.HHOOK g_hHook;
HANDLE   g_hModuleBOOL APIENTRY DllMain()
{
g_hModule = hModule;
g_hHook = NULL;
}
BOOL OpenHook() // Export the function
{
  g_hHook = SetWindowsHookEx(WH_KEYBOARD,KBProc,(HINSTANCE)g_hModule,0);
  return g_hHook != NULL;
}// 在app中只负责调用void main()
{
  OpenHook();
}

解决方案 »

  1.   

    我就是都在dll中作的这一切,我在app中仅作了初始化dll的工作,执行了instkbhook();
    BOOL CDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon
    //读取DLL
    static HINSTANCE hinstDLL; 
    typedef BOOL (CALLBACK *inshook)(); 
    inshook instkbhook;
    if(hinstDLL=LoadLibrary((LPCTSTR)"hook.dll"))
    {
       instkbhook=(inshook)GetProcAddress(hinstDLL, "installhook"); 
       instkbhook();
    }
    return TRUE;  // return TRUE  unless you set the focus to a control
    }
      

  2.   

    我看钩子没有问题,可能是你的
    if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
    {
      
    }
    内部。在其中设置输出,在DEBUG 下跟踪一下。
      

  3.   

    里面就是这些东西,会出问题吗?SetCursorPos(50, 100);
    Sleep(2500);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    SetCursorPos(50, 200);
    Sleep(2500);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    SetCursorPos(50, 300);
    Sleep(2500);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    SetCursorPos(50, 400);
    Sleep(2500);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    SetCursorPos(50, 500);
    Sleep(2500);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);