关于全局钩子,请各位帮忙,谢谢了

gqlyxg1981 2003-04-29 03:32:41
我的全局钩子怎么不能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
先谢谢各位的帮忙
...全文
61 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
TO kataboy(小浩子)
我要,ouyongke@163.com
谢谢你
iec 2003-05-07
  • 打赏
  • 举报
回复
yangzi1014@163.net
iec 2003-05-07
  • 打赏
  • 举报
回复
ok
vitalord 2003-05-07
  • 打赏
  • 举报
回复
关注,我也要一份
vitalord@yahoo.com.cn
c12916 2003-05-06
  • 打赏
  • 举报
回复
能不能给我一份,我也在学习时用hook,谢谢
c12916@0335.net
gqlyxg1981 2003-05-05
  • 打赏
  • 举报
回复
我输出MyHwnd了,不是0
但我的程序就是收不到信息
我的E-Mail是:gqlyxg1981@hotmail.com/gqlyxg1981@sohu.com
mme 2003-05-04
  • 打赏
  • 举报
回复
不对啊,如果说TextOut(h,10,10,ch,strlen(ch));//可以输出到屏幕,说明全局钩子已经钩上,就说明问题是出现在MyHwnd,不信的话,你可以用TextOut把MyHwnd的值输出来看看是不是0。这样就可以知道哪里出了问题啦!
shadowstar 2003-05-04
  • 打赏
  • 举报
回复
会不会是已经HOOK了,先DelHook试试?
gqlyxg1981 2003-05-04
  • 打赏
  • 举报
回复
谢谢你的回复,我试过了,不灵
kataboy 2003-05-04
  • 打赏
  • 举报
回复
我这还有一个hook的电子书!不过不是很全!
要的通知我!发信息!留下E-mail!
mme 2003-05-03
  • 打赏
  • 举报
回复
当然拉,你的窗口获得焦点时,MyHwnd才是有效的。
你在
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if (hInst==NULL) hInst=hinst;
return 1;
}
里面加入
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
MyHwnd=FindWind("你的窗口",NULL);//加入这句就可以了
if (hInst==NULL) hInst=hinst;
return 1;
}
其实也可以用共享变量MyHwnd来解决。
kataboy 2003-04-29
  • 打赏
  • 举报
回复
SendMessage(hInst,Message,wParam,lParam);

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧