部分代玛
主程序中程序
void CQQexeView::Starthook() 
{
HHOOK start=qstarthook();
if (start)
{
    CQQexeDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
pDoc->qqnumber+="132";
Invalidate();
}
void CQQexeView::Lookdata() 
{
CQQexeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->qqnumber+=qqdata; Invalidate();
}
void CQQexeView::Stophook() 
{
BOOL stop=qstophook();
// TODO: Add your command handler code here
}
DLL中程序
#pragma data_seg("qqdata")
CString qqdata;
HHOOK Hook=NULL;
#pragma data_seg()
DllExport HHOOK qstarthook()
{
Hook=SetWindowsHookEx(WH_KEYBOARD,qqhook,theApp.m_hInstance,0);
        qqdata="starthook";
return Hook;
};
DllExport BOOL qstophook()
{
BOOL result=FALSE;
result=UnhookWindowsHookEx(Hook);
Hook=NULL;
return result;
};
LRESULT CALLBACK qqhook(int nCode,WPARAM wParam,LPARAM lParam)
{
LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam);
//qqdata+=(CString)nCode;
    qqdata=(CString)nCode; return Result;
};

解决方案 »

  1.   

    你是要共享代码段中CString qqdata;的信息吧,这么写
    #pragma data_seg("Shared")
    CString qqdata;
    #pragma data_seg()
    #pragma comment(linker,"/section:Shared,rws")
      

  2.   

    增加读写
    #pragma comment(linker,"/section:Shared,rws")
      

  3.   

    不是这个问题!
    我在.DEF文件中以经把这段共享数据段设置为共享了,也就是可读写
    SECTIONS
    qqdata RADE WRITE SHARED
    主要的问题是我在主程序里接收不到qqdata这个变量!!
      

  4.   

    #pragma data_seg("Shared")
    CString qqdata = T("");//呵呵,这里没初始化!
    #pragma data_seg()
    #pragma comment(linker,"/section:Shared,rws")