关于全局钩子,请各位帮忙,谢谢了
我的全局钩子怎么不能PostMessage到我得出程序呢?
源代码如下:
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#pragma argsused
HHOOK MyHook=NULL;
HWND MyHwnd=NULL;
HINSTANCE hInst=NULL;
long Message=0;
const LRESULT CALLBACK HookCallBack(int nCode,WPARAM wParam,LPARAM lParam);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if (hInst==NULL) hInst=hinst;
return 1;
}
//---------------------------------------------------------------------------
bool __export InstHook(HWND Handle,long Msg)
{
if (MyHook==NULL)
{
MyHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookCallBack,hInst,0);
MyHwnd=Handle;
Message=Msg;
}
else return false;
return true;
}
void __export DelHook()
{
if (MyHook==NULL)
{
UnhookWindowsHookEx(MyHook);
MyHook=NULL;
}
}
const LRESULT CALLBACK HookCallBack(int nCode,WPARAM wParam,LPARAM lParam)
{
if (nCode<0) CallNextHookEx(MyHook,nCode,wParam,lParam);
if (nCode==HC_ACTION)
{
SendMessage(MyHwnd,Message,wParam,lParam);//发送消息给主程序,只有鼠标在窗口上时窗口才收得到,??????
MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam;
HDC h;
h=GetDC(0);
static char ch[20];
sprintf(ch,"Mouse:%d,%d ",l->pt.x,l->pt.y);
TextOut(h,10,10,ch,strlen(ch));//可以输出到屏幕,说明全局钩子已经钩上
// MessageBox(NULL,"aaa","aaa",0);
}
return CallNextHookEx(MyHook, nCode, wParam, lParam);
}
我的E-mail:gqlyxg1981@sohu.com
先谢谢各位的帮忙