注册了一个WH_GETMESSAGE的hook,在2000和xp下可以钩到wm_devicechange消息,在98下就怎么不行呢,急!给个提示

fxj51983 2005-02-01 09:27:05
LRESULT CALLBACK WINAPIHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode<0)
return CallNextHookEx(NULL,nCode,wParam,lParam);
switch(nCode)
{
case HC_ACTION:
switch(wParam)
{
case PM_NOREMOVE:
PMSG pmsg=(PMSG)lParam;
if(pmsg->message==WM_DEVICECHANGE)
{
if(pmsg->wParam == DBT_DEVNODES_CHANGED)
{
AfxMessageBox("aaa");
}
}
break;
}
}
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiyululu 2005-03-05
  • 打赏
  • 举报
回复
很简单,在98下return CallNextHookEx(NULL,nCode,wParam,lParam);中的第一个参数不能为NULL,请参看MSDN!
zkxz 2005-03-02
  • 打赏
  • 举报
回复
98不支持DBT_DEVNODES_CHANGED
dongfa 2005-03-02
  • 打赏
  • 举报
回复
想接收WM_DEVICECHANGE不用hook吧?

调用RegisterDeviceNotification注册一个就可以了。

98也是可以的。
zhjie374 2005-02-04
  • 打赏
  • 举报
回复
帮你UP一下.
顺便问一下,你是HOOK系统中全部进程的调用吗?
fxj51983 2005-02-02
  • 打赏
  • 举报
回复
up一下
fxj51983 2005-02-01
  • 打赏
  • 举报
回复
注册函数如下
SetWindowsHookEx(WH_GETMESSAGE,WINAPIHookProc,glhInstance,0);
fxj51983 2005-02-01
  • 打赏
  • 举报
回复
上面的有些乱,主要代码是这样的
LRESULT CALLBACK WINAPIHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{

if(nCode<0)
return CallNextHookEx(NULL,nCode,wParam,lParam);
switch(nCode)
{
case HC_ACTION:
PMSG pmsg=(PMSG)lParam;
switch(wParam)
{
case PM_NOREMOVE:
if(pmsg->message==WM_DEVICECHANGE)
{
AfxMessageBox("aaa");
}
break;
}
}
return CallNextHookEx(NULL,nCode,wParam,lParam);
}

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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