部分代玛
主程序中程序
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;
};
主程序中程序
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;
};
#pragma data_seg("Shared")
CString qqdata;
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")
#pragma comment(linker,"/section:Shared,rws")
我在.DEF文件中以经把这段共享数据段设置为共享了,也就是可读写
SECTIONS
qqdata RADE WRITE SHARED
主要的问题是我在主程序里接收不到qqdata这个变量!!
CString qqdata = T("");//呵呵,这里没初始化!
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")