WH_CALLWNDPROC crash
I am fedup with this problem. please help me..
i have to monitor an external windows messages, especially one USER
+22 message, this message is been sent on mouse click and right
click
pop menu .i can check mouse left click without any problem, I am
using WH_CALLWNDPROC hook .
The application crashes when a user right clicks and selects a pop-up
menu item
this problem seems to occur only new version of this
application(wich application i need monitor),old version dosn't have
this problem.
using DLL for CALLWNDPROC
i use this way
#pragma comment(linker,"-section:MYSEG,ewrs")
#pragma data_seg( "MYSEG" )
HHOOK g_hHook = 0;
HWND g_MainWnd = NULL;
#pragma data_seg()
set hook
extern "C" BOOL _declspec(dllexport) SetHook(HWND hwnd )
{
if(g_MainWnd !=NULL)return 1;
g_MainWnd = hwnd;
HWND hWnd = ::FindWindow("AppwndClass", NULL); // Call DWORD
pId=0;
DWORD pId2 = GetWindowThreadProcessId(GhWnd,&pId);
HINSTANCE hModHnd=NULL;
MEMORY_BASIC_INFORMATION mbi;
static int dummy;
VirtualQuery( &dummy, &mbi, sizeof(mbi) );
DWORD hMod = (DWORD)mbi.AllocationBase;
char szModule[MAX_PATH];
GetModuleFileName( (HMODULE)hMod, szModule, sizeof(szModule) );
hModHnd = GetModuleHandle(szModule);
g_hHook =::SetWindowsHookEx( WH_CALLWNDPROC ,(HOOKPROC)HookProc,
(HINSTANCE)hInt,pId2);
return 1;
}
Hook procedure
extern "C" LRESULT _declspec(dllexport) HookProc(int nCode,
WPARAM wParam, LPARAM lParam )
{
try
{
if(nCode<0)
{
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
CWPSTRUCT *myStuct= (CWPSTRUCT*)lParam;
if(myStuct!=NULL)
{
if(myStuct->message == WM_USER + 22)//1046
{
::PostMessage(g_MainWnd, WM_USER + 22, myStuct->lParam, myStuct-
lParam);//sending message to my app
}
if(myStuct->message == WM_USER + 21)//close app message
{
::UnhookWindowsHookEx(g_hHook);
::PostMessage(g_MainWnd,WM_CLOSE,0,0);
}
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}//try
catch(...)
{
}
kindly correct me if i am doing anything wrong ..