求求求

解决方案 »

  1.   


    方法有很多,下面是一种发送方发送通讯的消息以通知接收方,接收方在收到发送方的消息后就可以对内存进行读写操作。 在程序设计中采用Windows注册消息进行消息传递,首先在发送进程初始化过程中进行消息注册: 
    m_nMsgMapped=::RegisterWindowsMessage("Mapped"); 
    m_nMsgHandle=::RegisterWindowsMessage("Handle"); 
    m_nMsgShared=::RegisterWindowsMessage("Shared"); 
    在程序运行中向接收进程发送消息: 
    CWnd* pWndRecv=FindWindow(lpClassName,"Receive"); 
    pWndRecv->SendMessage(m_MsgMapped,0,0); 
    pWndRecv->SendMessage(m_nMsgHandle, 
    (UINT)GetCurrentProcessID(),(LONG)pApp->m_hGlobalHandle); 
    pWndRecv->SendMessage(m_nMsgShared,0,0); 
    可以按如下方式发送WM_COPYDATA消息: 
    static COPYDATASTRUCT cds;//用户存放数据 
    pWnd->SendMessage(WM_COPYDATA,NULL,(LONG)&cds); 接收方进程初始化也必须进行消息注册: UNIT CRecvApp:: m_nMsgMapped=::RegisterWindowsMessage("Mapped"); 
    UNIT CRecvApp::m_nMsgHandle=::RegisterWindowsMessage("Handle"); 
    UNIT CRecvApp::m_nMsgShared=::RegisterWindowsMessage("Shared"); 
    同时映射消息函数如下: 
    ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgMapped,OnRegMsgMapped) 
    ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgHandle,OnRegMsgHandle) 
    ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgShared,OnRegMsgShared) 
    在这些消息函数就可以采用上述技术实现接收进程中数据的读写操作了。