这几天闲来无事,尝试着完成VB6+C-DLL全局钩子的编写。
这个程序本来在2月份就可以完成的,但是那时候工作繁忙,程序的编写就此搁下,但不想一搁置就是半年多。。。
源码中WH_FOREGROUNDIDLE钩子发生问题的原因找到了,原来是我犯了一个低级错误。。。。请大家将源码里面的WH_FOREGROUNDIDLE钩子回调函数改成下面这样的:
//WH_FOREGROUNDIDLE 钩子回调函数 LRESULT CALLBACK ForegroundIdleProc(int nCode,WPARAM wParam,LPARAM lParam) { DWORD dwTID = GetCurrentThreadId(); if (nCode < 0) return CallNextHookEx(hHook,nCode,wParam,lParam); if (nCode == HC_ACTION) { CDS.dwData = 4; CDS.cbData = 4; CDS.lpData = (LPVOID)&dwTID; SendMessage(hWnd,WM_COPYDATA,(WPARAM)hWnd,(LPARAM)&CDS); } return CallNextHookEx(hHook,lParam); }
源码下载地址:http://download.csdn.net/source/2615305