DLL全局钩子和外部进程之间通讯的问题。
这是我钩子DLL中向外部进程传递消息的函数,当钩子被注入后这段会被执行,但接收消息的进程收不到它发出的消息。 后来我测试把这个函数放在一个MFC EXE中,就可以用。 请问在DLL中发消息是不是有什么限制,或者我哪里做错了。谢谢各位指教!
BOOL SendIpcMsg()
{
//CWnd *pWnd=CWnd::FindWindow(NULL,"Receiver");
CString strWindowTitle = _T("Receiver");
CString strDataToSend = _T("This is a message to send");
LRESULT copyDataResult;
CWnd *pOtherWnd = CWnd::FindWindow(NULL, strWindowTitle);
if (pOtherWnd)
{
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strDataToSend.GetLength();
cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData);
copyDataResult = pOtherWnd->SendMessage(WM_COPYDATA,
(WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(),
(LPARAM)&cpd);
strDataToSend.ReleaseBuffer();
// copyDataResult has value returned by other app
}
else
{
AfxMessageBox("Unable to find other app.");
}
return FALSE;
}