如题,我试过,任何消息都是这样

解决方案 »

  1.   

    你回调函数怎么写的?? 有的操作,比如单击一下鼠标,会有WM_MOUSEDOWN跟WM_MOUSEON两个事件,所以如果你在回调函数里面没有区分的话,会执行两次..
      

  2.   

    LRESULT WINAPI GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam)

    MSG *pmsg;
        UINT uMsg;    pmsg = (MSG *)lParam;
        uMsg = pmsg->message;

    if(nCode==HC_ACTION)
    {
    if (pmsg->message ==WM_CHAR)
    {
    CLSID clsid;
    ::CLSIDFromProgID(L"Word.Application",&clsid);
    LPUNKNOWN punk = NULL;
    LPDISPATCH pDisp = NULL;
    if( ::GetActiveObject(clsid,NULL,&punk) == S_OK )
    {
    if( punk->QueryInterface(IID_IDispatch,(void**)&pDisp)   ==   S_OK ) 
    {
    _Application m_App;
    m_App.AttachDispatch(pDisp,TRUE);  

            m_Sel.AttachDispatch(m_App.GetSelection());        m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0));
            m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0));
            m_Sel.TypeText("123456");
          //   Release   dispatch   pointers.   
            m_Sel.ReleaseDispatch();
    }
    }
    }
    }
    return (CallNextHookEx(g_hhook,nCode,wParam,lParam));
    }
      

  3.   

    很简单的一个函数,只是在word上输出几个数字,但实际效果是输出好几次
      

  4.   

    THE QUESTION HAS BEEN SOLVED
    if (nCode == HC_ACTION && (wParam & PM_REMOVE))