PostMessage的奇怪问题??

InitialJ 2009-12-09 05:29:11
在dll中使用WH_GETMESSAGE hook所有消息,如果是鼠标消息就PostMessage,UWM_MOUSE是自己定义的消息,代码如下

static LRESULT CALLBACK hookproc(UINT nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
{ /* pass it on */
return CallNextHookEx(hook, nCode, wParam, lParam);
} /* pass it on */
LPMSG msg = (LPMSG)lParam;
if(msg->message == WM_MOUSEMOVE ||
msg->message == WM_NCMOUSEMOVE)
{
PostMessage(hWndServer, UWM_MOUSE, wParam,lParam);
}
return CallNextHookEx(hook, nCode, wParam, lParam);
} // msghook

下面是接收到消息时的处理代码,奇怪的是在上面的函数中很正常的lParam,通过PostMessage后,在下面的函数中lparam就不对了,这是什么原因??
LRESULT CRemoteControlDlg::OnMyMouse(WPARAM wparam, LPARAM lparam)
{
LPMSG msg = (LPMSG)lparam;
return 0;
}
...全文
207 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2009-12-13
  • 打赏
  • 举报
回复
原理是一样的,人家说的“临时变量”和你说的“内存变换”的最终原因都是postmessage不等待,你发送的数据都必须有足够能力能保存现场,而“临时变量”和“可能变化的内存”都不能保存原有现场
[Quote=引用 8 楼 initialj 的回复:]
问题解决了,在DLL使用全局变量即可解决
出错的原因并不是LS几位说的临时变量问题,我试着传递一个特定的数字是可以传递的,原因在于togoblime所讲的,PostMessage并不等消息处理完成,就可能又PostMessage其他消息了,所以可能到程序接收到消息的时候,lParam本身没变,但是lParam指向的内存变了,我是这么理解的。
[/Quote]
xiejhzwrgcky 2009-12-13
  • 打赏
  • 举报
回复
up
wsmyaoquhuawei 2009-12-13
  • 打赏
  • 举报
回复
UP
似水流年__ 2009-12-10
  • 打赏
  • 举报
回复
你把消息类型换换,最好用自定义消息
InitialJ 2009-12-10
  • 打赏
  • 举报
回复
问题解决了,在DLL使用全局变量即可解决
出错的原因并不是LS几位说的临时变量问题,我试着传递一个特定的数字是可以传递的,原因在于togoblime所讲的,PostMessage并不等消息处理完成,就可能又PostMessage其他消息了,所以可能到程序接收到消息的时候,lParam本身没变,但是lParam指向的内存变了,我是这么理解的。
nintendo_dskay 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heksn 的回复:]
lParam是临时变量 PostMessage后这个变量就不存在了 当然不对了
[/Quote]
up
Eleven 2009-12-09
  • 打赏
  • 举报
回复
right
  • 打赏
  • 举报
回复
lParam是临时变量 PostMessage后这个变量就不存在了 当然不对了
bragi523 2009-12-09
  • 打赏
  • 举报
回复
要在hookproc中把指针new出来
等到OnMyMouse中处理完了再delete


因为你用的时候那个指针可能已经失效了
togoblime 2009-12-09
  • 打赏
  • 举报
回复
PostMessage(hWndServer, UWM_MOUSE, wParam,lParam);
这句估计执行了很多遍,可能你在调OnMyMouse时处理的并不是当初发送的那个UWM_MOUSE消息
InitialJ 2009-12-09
  • 打赏
  • 举报
回复
sendmessage试过了,在本窗口可以,鼠标移到别的地方就死机,而且是整个系统都没反应
fandh 2009-12-09
  • 打赏
  • 举报
回复
PostMessage不等待处理结果,试试sendmessage

15,471

社区成员

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

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