15,471
社区成员
发帖
与我相关
我的任务
分享
//消息过程函数
LRESULT CALLBACK MyWindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
CString strMsg;
strMsg.Format("监视到的消息: %x",uMsg);
OutputDebugStringA(strMsg);
if (uMsg == WM_KEYDOWN)
{
OutputDebugStringA("响应了 WM_KEYDOWN 消息");
}
return CallWindowProc(g_OldProc,hwnd,uMsg,wParam,lParam);
}
//下面开始读取共享内存中的数据.
HANDLE hfileMap = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,"MyMemory");
if (hfileMap == NULL)
{
::MessageBox(NULL,"打开共享内存失败.",NULL,NULL);
}
LPVOID pShareMem = ::MapViewOfFile(hfileMap,
FILE_MAP_ALL_ACCESS,
0,
0,
0);
//获取窗口句柄.
CString str = (char*)pShareMem;
HWND hCalc = (HWND)atoi(str.GetBuffer(str.GetLength()));
//::MessageBox(NULL,str,NULL,NULL);
//修改窗口过程函数.
g_OldProc = (WNDPROC)::SetWindowLongPtr(hCalc,
GWLP_WNDPROC,
(LONG)MyWindowProc);
if (g_OldProc == 0)
{
::MessageBox(NULL, "修改过程函数失败", NULL, MB_OK);
}