如何向一个未处于前端的窗口(也就是未激活)发送键盘或鼠标消息?

我能得到这个窗口的Cwnd指针,也能得到句柄,但里面的内容都是程序自己画上去的,不是标准控件,我直接向这个句柄发送消息sendmessage(hwnds,WM_CHAR,... 我能得到这个窗口的Cwnd指针,也能得到句柄,但里面的内容都是程序自己画上去的,不是标准控件,我直接向这个句柄发送消息sendmessage(hwnds,WM_CHAR,32,0),表示发送空格,也试了postmessage,消息试了WM_CHAR,WM_KEYDOWN与WM_KEYUP,但只有这个窗口是激活的时候才可以的。现在问题就是,怎么样在其不处于激活的时候也能接收键盘消息呀?能用的方法都行。顺便说下,这个程序是QQ游戏里的火拼泡泡龙。知道的最好能给出详细的说明,不要一两句话了事,要对题呀。说说原理也行,如果对本人有重大启发的,我一定会加分的,谢谢啦~ 展开
 我来答
匿名用户
2013-08-15
展开全部
正统来讲,这个问题没有实际意义……
WIN的键盘消息队列是“队列”,而不是独立的一条消息,比如按下键会产生WM_KEYDOWN或WM_SYSKEYDOWN消息
但是这会自动被放置在当前键盘聚焦的窗体所在线程的消息队列中,也就是说,激活窗体和非激活窗体无法一起去响应键盘消息
这也是必要的保护措施,因为目前的程序也好,系统也好,有且永远只有一个窗体是处于激活状态的(即使桌面也是窗体),电脑可不知道Atl+F4l是关闭激活窗体,还是关闭非激活窗体……

但是换一个思路来考虑,那些远程木马其实就是绕过了消息处理机制,在消息发往程序之间就接管过来……这是hook(钩子)方面了……所以真要实现的话,可以多参考一些木马方面的技术

举个大概的例子
首先替换IAT表,也就是替换进程加载另一个模块时,建立起来的模块内的函数名与它在模块内相对地址的映射关系
然后调用API函数SetWindowsHookEx()把一个你的这个应用程序定义的钩子子程安装到钩子链表中
然后调用API函数CallNextHookEx来传递这个钩子
最后在使用完之后调用UnHookWindowsHookEx()来卸载钩子
于是,你用自己的电脑,别人偷偷用你的电脑……木马基本就这么来的……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式