各位高手:
    现在网上有很多软件能激活软件中的灰色按钮,使禁用的按钮变成可用的,如何防止将灰色按钮激活?
我知道激活的原理,就是获取激活窗口的句柄,然后枚举控件,激活,我尝试使用钩子函数挂接EnumChildWindows和EnableWindow这两个API,可是依然无法防止,请教各位高手有什么办法能防止此类程序激活灰色按钮?

解决方案 »

  1.   

    hook那么麻烦的就不说了。。简单点,定义一个变量表示某按键是否可用,在按钮的函数的开关判断一下那个变量,如果是不能用的就说明别人是用了那些激活按钮的软件了,你想干嘛就干嘛去了不过这只能对付那一些小菜鸟而已。。^_^
      

  2.   

    楼上是正解,你可以用自己的变量让他即便是激活了,仍然无法调用你的方法,如果你非要禁用的话,可以采用下面的方法。
    当用enbale激活窗口时,窗口会收到wm_enable消息,
    你可以截获这个消息,进行判断是不是你自己需要的激活,
    也可以用钩子直接拦截按钮的窗口过程,当被激活时你肯定能收到很多消息,任意一个消息里,你都可以进行判断,然后强制保持禁用状态。
      

  3.   

    定义一个变量表示按键是否可用.
    然后设置定时器.
    每隔一分种判断变量,若按键不可用,调用EnableWindow让它灰化,这样应该能使你的软件安全那么一点点.
      

  4.   

    我目前的做法是即使灰色按钮激活之后,点击也无法正常使用功能,但是总是能够被激活这让我很不舒服。ylmbtm的方法我去试试。
      

  5.   

    谢谢各位,这个问题我已经解决了,主要参考了ylmbtm同志的建议,具体是从CButton派生一个类,然后将按钮定义为该派生类的对象,之后在派生类里面处理WM_ENABLE消息。结贴!