目标窗口为 游戏 "倚天屠龙记"
1.RT,EnumWindows,SPY4WIN的枚举窗口,SPY4WIN将狗头拉到窗口上,SPY++使用拖拽准星,这几种方式都无法成功找到窗口,不过SPY++的窗口枚举却能找到,不知什么原因,有人知道吗?
2.PrintWindow失败有哪几种情况呢? MSDN上好象没看见解释啊.
3.找到一个大漠插件,使用里面的FindWindow却能找到该窗口,看其插件介绍为:支持获取通过正常手段获取不到的窗口句柄. 怎样实现的(即怎样不正常的手段).
    望大家多多指导啊.若全解惑,可再加分.

解决方案 »

  1.   

    1.FindWindow找不到,可能被HOOK了,可以试一下GetWindow,我在彗星小助手里就是用这个API来枚举窗口的,包括360等被保护的窗口都能找到
    2.PrintWindow对DX画的窗口无效,绝大部分游戏都是DX画的
      

  2.   

    首先谢谢LS的大大,大清早就来帮助人了.
    1.嗯,试了下GetWindow的确能实现,那拖准星也不行是因为GetWindowFromPoint也被HOOK了?(问题3自然解了)
    2.不过就算是DX,PrintWindow也不会失败啊(因为我用魔兽测试过,截下来的图在窗口里面没有任何内容,黑的),但是并不会导致失败啊,莫不是该API也被HOOK了?
      

  3.   

    关于硬件加速那个东东,只要关了PrintWindow执行后就会有正常的图象,这我知道.
    我是说PrintWindow返回0的情况有哪些(成功:非0  失败:0),就算DC里是黑色,但也是执行成功了的啊
      

  4.   

    1. 使用WS_EXLAYERED属性的窗体不能通过spy++抓取。其实是抓到了,无法框选范围。
    2.不知。
    3.使用windowfrompoint函数获取当前坐标的窗体句柄。至于hook不hook的。真有这么复杂吗?
      

  5.   

    wow是没有保护,因此可以成功,lz拿其为例不当
      

  6.   

    1.窗体并未设置WS_EX_LAYERED,GetWindowLong后得出的.并且只要该窗体一设置WS_EX_LAYERED,窗口就会消失,看情况可能是被设置了完全透明,并且在SetWindowLayeredAttributes后等会使用GetWindowLayeredAttributes获取其属性时该API会失败,返回0(测试其他窗体时能成功返回).
    3.WindowFromPoint也不能获取,上面已经说明,不过API名字打错了.......HOOK也算是一种保护措施吧.在HOOK过的API里判断只要是本窗体,那么就直接返回0.
      

  7.   

    寒...又打错名字了..  上面应该是GetLayeredWindowAttributes和SetLayeredWindowAttributes.....,郁闷死