Hook编程,我做了个程序,这个程序调用了另外一个exe程序,我想在程序中能够监视exe程序。
当那个exe程序点击了一个“完成”的Button按钮的时候,我的Hook程序就把exe这个进程给结束掉。 问题:
1,我应该做一个什么样的Hook程序能,局部的还是全局的,还是两种都可以。
2,SetWindowsHookEx(,(HOOKPROC)Proc,,g_dw);
第一个参数是什么?
第三个参数怎么获得
3 Proc函数应该怎样写啊 谢谢高手指点
当那个exe程序点击了一个“完成”的Button按钮的时候,我的Hook程序就把exe这个进程给结束掉。 问题:
1,我应该做一个什么样的Hook程序能,局部的还是全局的,还是两种都可以。
2,SetWindowsHookEx(,(HOOKPROC)Proc,,g_dw);
第一个参数是什么?
第三个参数怎么获得
3 Proc函数应该怎样写啊 谢谢高手指点
2.函数SetWindowsHookEx安装钩子。其函数原型为:
HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpfn, INSTANCE hMod,DWORD dwThreadId )
参数idHook表示钩子类型,它是和钩子函数类型一一对应的。比如,WH_KEYBOARD表示安装的是键盘钩子,WH_MOUSE表示是鼠标钩子等等。
Lpfn是钩子函数的地址。
HMod是钩子函数所在的实例的句柄。对于线程钩子,该参数为NULL;对于系统钩子,该参数为钩子函数所在的DLL句柄。
dwThreadId 指定钩子所监视的线程的线程号。对于全局钩子,该参数为NULL。
SetWindowsHookEx返回所安装的钩子句柄。 PROCESS_INFORMATION pi;
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = 0;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
BOOL bres = CreateProcess(
NULL
,_T("C:\\padspwr\\PowerPCB\\powerpcb.exe")
,NULL
,NULL
,false
,NORMAL_PRIORITY_CLASS
,NULL
,NULL
,&si
,&pi);
glhHook=(HWND)SetWindowsHookEx(WH_KEYBOARD,HookProc,NULL,pi.dwThreadId);
//pi.dwThreadId即为第三个参数,不过这样调用好象有点问题,还没有找到原因
3.LRESULT WINAPI HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{......}