zoukankan      html  css  js  c++  java
  • 详细解析Windows按键突破专家的原理

    相信在Window按键突破专家没有出来的时候,很多人还不知道软件还可以这样编的吧,本人也是一样,当知道有Window按键突破专家这个软件时,仔细去想一下它的实现原理,才突然恍然大悟,原来原理居然是这么的简单,为什么以前我就没有想到呢。 好了,不说那么多废话,直接进入主题,我先是说说按键突破的原理。实现按键突破的其实就是EnableWindow这个函数。   hWnd 指定将要启用或者禁用的窗口的句柄; bEnable 若为TRUE则启用窗口,为FALSE则禁用窗口。 只要把EnableWindow的第二个参数设置为TRUE,第一个参数填控件的句柄就将原来被禁止的控件重新变为可用。 现在的主要的问题是怎么得到控件的句柄,用VC++的朋友,应该都用过Spy++这个强大的工具吧,它可以得到任意控件的句柄,和窗口的类名,看完这篇文章后,读者们也可以自己做一个属于自己的Spy++啦。 先介绍一下RealChildWindowFromPoint这个函数,该函数的功能是用来获取在指定点上的子窗口的句柄。   返回值:返回其子窗口句柄。 RealChildWindowFromPoint函数只能够查找到由ptParentClientCoords 所得到的子窗口,但是无法得到最深层的窗口,也就是说如果有两个窗口重叠,就无法得到下面的窗口,这样的情况是经常出现的。 “第一个子窗口”的窗口和“最深层的窗口”的复选框窗口就重叠了,如果用 RealChildWindowFromPoint 就只能得到“第一个子窗口”的窗口,而无法的到“最深层的窗口”的复选框,所以只简单的调用这个函数是无法实现Spy++的功能的。 大家来看看这个函数,这个函数会将鼠标所在的位置的窗口句柄赋予*phWnd。读者下次想得实现spy++的功能就调用这个函数就可以了。 解释一下,用GetCursorPos得到的鼠标位置,是屏幕的鼠标位置,比如你的分辨率为1024*768,GetCursorPos这个函数得到的就是在1024*768这个屏幕范围的鼠标位置,而客户区窗口坐标,指的是鼠标在一个窗口上的坐标,不同于屏幕坐标。   呵呵,代码不是很多,如果看不懂的话,不要紧,懂得调用这个函数就可以啦。现在要再调用EnableWindow就可以了。   如果只是运行一次这面的这些语句的话,还是不行的,必须在程序开启突破功能的时候一直运行。所以,   但是,这样的话,问题又来了,就是让程序休息100毫秒,这个程序还是会把所以的cpu都占用完的,总不能因为这一个程序,而把资源的耗尽了,这是谁都不愿意看到的。这时,就必须用到多线程了,对于多线程技术,很多文章都有介绍了的,我就不多说那么多了。   先把实现按键突破的语句放在一个新的函数里。里面的这个k,是个全句变量。先在“资源”中添加一个Button按键(只是为了说明问题,所以程序做得很简单)。   当 按了一下Button时,就可以开始实现按键突破的功能了。仔细看一下,会发现这个程序和Window按键突破专家有点不同,因为Window按键突破专 家在鼠标指向一个窗口时,就会将那个窗口下所有被禁止的控件都变成可用,而本程序,是鼠标指去哪个不可用的控件,那个控件就会编程可用,其他控件不受影响,如果想和Window按键突破专家一样的功能,其实也很简单,只要改一下代码就可以了,读者们自己想想吧。 补充一点:这个程序不能直接在VC++下运行,因为源代码将编译不了,必须去微软的老窝去下载最新的Windows Sdk,安装以后,把所有的.h和.lib拷贝到VC++的相关目录里。Windows sdk有许多有用的函数,建议用VC++的朋友都应该去下载。
  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327036.html
Copyright © 2011-2022 走看看