为什么我在DLL中用PostThreadMessage给进程发消息总是不成功?
我把HOOK放在了DLL中,想在HOOK到数据时PostThreadMessage给调用进程。可是没反应。
DLL代码:DWORD dwThreadID = 0; //它是全局变量...//Install hookHHOOK InstallHook( DWORD dwID ) { dwThreadID = dwID; g_hHook = SetWindowsHookEx( WH_GETMESSAGE, KeyboardProc, g_hInstance, 0 ); return g_hHook;}//Record functionLRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lParam ){ if ( nCode < 0 ) return CallNextHookEx( g_hHook, nCode, wParam, lParam ); //if action if ( HC_ACTION == nCode ) { MSG *pMsg = (MSG *)lParam; if ( WM_IME_COMPOSITION == pMsg->message ) { if ( pMsg->lParam & GCS_RESULTSTR ) { PostThreadMessage( dwThreadID, WM_CHARMSG, 0, 0 ); //不能断点,所以我也不知道有没有成功 } } } return CallNextHookEx( g_hHook, nCode, wParam, lParam );}EXE代码:void CTestDlg::OnBnClickedStart(){ PeekMessage( &msg, NULL, WM_USER, WM_USER + 1000, PM_NOREMOVE ); InstallHook( GetCurrentThreadId() ); while ( ::GetMessage( &msg, NULL, WM_USER, WM_USER + 1000 ) ) { switch(msg.message) { case WM_CHARMSG: AfxMessageBox( "收到" ); break; } }}