也许你就是被这标题吸引来的,呵呵!
好久没发帖了,勾引一下大家的胃口,当然有的人已经猜出原理了!
既然来了,都要把原理学回家,不然就没意思了!
 
很多游戏现在都不支持后台消息鼠标,要实现真的不是简单的,什么注入dll啊,什么hook俺也学不懂,那就简简单单另辟蹊径了
 
下面来讲讲原理吧(下面的玩玩可以,用于实际不现实,俺也不藏了,看到这么多人回复,良心过意不去,呵呵)
 
首先,将要点击的窗口上面覆盖的所有窗口,由一般模式变成置顶模式

SetWindowPos temp, -1, 0, 0, 0, 0, 1 Or 2  '置顶

然后再变成分层窗口的鼠标穿透模式

  1. ret = GetWindowLong(temp, GWL_EXSTYLE)
  2. ret = ret Or WS_EX_TRANSPARENT Or WS_EX_LAYERED
  3. SetWindowLong temp, GWL_EXSTYLE, ret
  4. SetLayeredWindowAttributes temp, 0, 255, LWA_ALPHA
这样鼠标相应时,只相应你设定的那个窗口,上面所覆盖的窗口只是视觉上的,从而实现后台点击!

上面为什么要置顶?

答:不置顶的话,你点击时,就激活了你选中的窗口,窗口就自动前置了,变前台了就没意思了

为什么要先置顶,后分层?

答:这个是测试了好多次,要是先分层后置顶,无法实现置顶

如何获得覆盖在上面的窗口句柄

答:获得一个分层一个,分层后就会被忽略 WindowFromPoint(X, Y),形同透明

总结一下:上面就是主要用到的API,其中分层的那个API,对视屏以及dX画面的作用,只有专业人士才能评论,因为我确实不懂,视频会变黑,DX画面会花屏,我的解决办法就是某某某曾经提过的,将窗口的任何一点拖到屏幕外就OK了

以下是我把它做成插件,可供大家练习使用,或许你会有更好的创意,到时可不要独自享受哦!


posted on 2011-05-02 22:58  °ι 、曲 终  阅读(3644)  评论(3)    收藏  举报