Click here to Skip to main content
12,454,164 members (55,974 online)

How can a Hook DLL pass data to the Process sets it .

Lygatto Zenki asked:

Open original thread
for example Process A(MFC Process),uses loadlibrary to load a dll and install a global hook(the hook procedure is in the dll).
I want this dll to pass any information to the Process A, So I used SendMessage in the hook procedure to send WM_COPYDATA to Process A,but it didnt work.The Process A(have setted onCopyData()) didnt receive the message , also the same as PostThreadMessage().

//Hook Procedure
__declspec(dllexport)  LRESULT  CALLBACK  mousehook_proc(int nCode,WPARAM wParam,LPARAM lParam)
{	
                        COPYDATASTRUCT cds;
                        MOUSEHOOKSTRUCT *pmhs = (MOUSEHOOKSTRUCT *)lParam;
			int result = ::SendMessage((HWND)FindWindow(NULL,L"MySpyM"),WM_COPYDATA,(WPARAM)pmhs->hwnd,(LPARAM)&cds);//The MySpyM Process("MySpyM" also the Window name) did not receive the WM_COPYDATA Message and if i replace the Message with WM_CLOSE,it received.......
			return ::CallNextHookEx((HHOOK)hook_handle,nCode,wParam,lParam);
	}

//The spy program porcess the WM_COPYDATA Message
BOOL CMySpyMDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
 
	MessageBox(L"Get Message",L"Alert",NULL);
		return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
Tags: Win32, MFC

Preview



When answering a question please:
  1. Read the question carefully.
  2. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar.
  3. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome.
Let's work to help developers, not make them feel stupid.
Please note that all posts will be submitted under the The Code Project Open License (CPOL).



Advertise | Privacy | Mobile
Web02 | 2.8.160826.1 | Last Updated 26 Mar 2009
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100