首页
社区
课程
招聘
[求助]怎样用postmessage来实现鼠标的移动?
发表于: 2009-5-2 17:34 7640

[求助]怎样用postmessage来实现鼠标的移动?

2009-5-2 17:34
7640
怎样用postmessage来实现鼠标的移动?

原来有一段能正常运行的鼠标移动代码:
  INPUT inp;
  for(int i=0;i<n;i++) {
    inp.type = INPUT_MOUSE;
    inp.mi.dx=1;
    inp.mi.dy=1;
    SendInput(1,inp,sizeof(inp));
  }

要求改为用postmessage来实现,于是,试写代码如下:
  POINT cp;
  GetCursorPos(&cp);  
  for(int i=0;i<n;i++) {
    PostMessage(GetDesktopWindow(), WM_MOUSEMOVE, 0, (cp.X+i)*65536+(cp.Y+i));
  }
   
可是,在正常的环境下试了一下,结果一点反应都没有,有谁知道这是什么原因呢?

先谢啦!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
SendInput函数是对当前整个屏幕发送一个鼠标或键盘驱动事件,不是针对窗口发送鼠标或键盘消息事件。
而PostMessage是消息事件发送,只针对窗口句柄对应的窗口有效。不会对整个屏幕有效。所以他们的操作方法是不同的。
2009-5-2 20:50
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
简单的有mouse_event
2009-5-3 13:00
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
GetDesktopWindow()->GetActiveWindow() or GetForegroundWindow()
2009-5-4 08:53
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2 楼的讲解很透彻, 学习了。
2009-5-4 10:50
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢楼上各位的指点!!!

在得到了正确的窗口句柄之后,就可以接收消息了。

只是有点不明白:根据文档,GetDesktopWindow返回的确实是Desktop Window的句柄,难道Desktop Window就不是Window?
2009-5-4 15:20
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是Window,但是你把消息发给它等于对牛弹琴,因为它不会把按键消息再转发给你想发的那个窗口。
2009-5-4 16:02
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
SetCursorPos不就可以了吗?
2009-5-4 16:32
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mouse_event好用一些
2009-5-5 09:34
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
搞明白了!!!

再次感谢各位耐心指点,谢谢!!!

附:已自愿给小虾和刘兄加声望(其余朋友的回答与要求不符,故免);
2009-5-5 10:31
0
游客
登录 | 注册 方可回帖
返回
//