思路是这样的:
创建个DLL WIN32 Dynamic-Lik Libray
里面带全局钩子.
SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,hIstance,0)关键是怎么通知main 函数里面的
while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
.来个高手写下DLL 文件的
和在main函数里面的引用方法.和执行步骤

解决方案 »

  1.   

    hook完整例子,有dll\和调用界面
    http://download.csdn.net/detail/gameslq/3692065
      

  2.   

    Keyboard hook 网上搜搜 好多
      

  3.   

    要通知的话,可以给窗口发自定义消息。代码示例:LRESULT CALLBACK CMyControl::KeyBoardMsgProc( int nCode, WPARAM wParam, LPARAM lParam)
    { if(nCode < 0)

    CallNextHookEx(hook, nCode, wParam, lParam);
    return 0;
    }
    if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
    {
    if (( wParam>=VK_LBUTTON )&&( wParam<=VK_OEM_CLEAR ) )
    {
    HWND hwnd = ::GetFocus();
    while( hwnd != NULL )
    {
    hwnd = ::GetParent(hwnd);
    CHAR name[255];
    ::GetClassName(hwnd,name,255); if (  0 == lstrcmp(name,"MyOCXWnd") )
    break;
    }
    SendNotifyMessage( hwnd, UWM_KEYBOARD_MSG, wParam, lParam /*(LPARAM)hwnd*/ );

    }
    } return CallNextHookEx(hook, nCode, wParam, lParam);
    }这段代码是一个OCX控件里的,也是DLL文件,发了一个自定义的消息UWM_KEYBOARD_MSG
    给控件所在的父窗体,父窗体的消息处理可以做进一步处理,比如调用函数,触发事件。
      

  4.   

    http://topic.csdn.net/u/20100225/21/c6ca37e1-cce5-41c4-bc93-072e26920158.html
      

  5.   

    既然是窗体,可用sendmessage,很多IAT Hook就是这种做法
      

  6.   

    如果是console,其实就变相的转化为进程间通讯,方法就多了,共享内存,管道,油槽,极端点开个端口TCCP/UDP通讯都是放大。