首先我们需要明白程序实际上程序中的每个窗口都会有个句柄(即:窗口句柄)这个句柄是唯一的,在同一时刻不会有两个同样的句柄存在.一般来说灰色按纽激活程序都是激活的当前活动的窗口即当前得到焦点的窗口,(其他没得到焦点的窗口为灰色标题栏)如何得到呢?我们可以用一个API

GetForegroundWindow

这个API即可获得当前激活的窗口.返回类型就是一个句柄,函数原形如下:

HWND GetForegroundWindow(VOID);

下面就是关键了.需要用到一个API

BOOL EnumChildWindows(   
    HWND hWndParent,
    WNDENUMPROC lpEnumFunc,
    LPARAM lParam
);

这个函数的作用为枚举出指定窗口的全部子窗口.窗口的子窗口可以理解为窗口上的控件,因为这些控件例如按钮其实也是窗口,但是他是在窗口上,所以为子窗口,同理,用GetForegroundWindow获得到的自然是父窗口的句柄了.

这个可能不大好理解,简单的说就是那些例如按钮之类的控件都是子窗口,所以我们用上面那个API可以把这些控件枚举出来,这个函数是需要一个回调函数的.

先说明下这个API的参数,第一个为父窗口的句柄,第二个为回调函数的指针,第三个一般为NULL他的意思是给回调函数的参数,必要的时候可以通过这个传递一个指针给回调函数.

下面看下回调函数.

BOOL CALLBACK EnumChildProc(
  HWND hwnd,      // handle to child window
  LPARAM lParam   // application-defined value
){
...
}

这样系统每枚举一个控件就会调用一次这个函数.启动第一个参数就是控件的句柄.

例如我们做如下判断

if (!::IsWindowEnabled(hwnd))
 {//处理灰色
        ::EnableWindow(hwnd,TRUE)
 }

这样灰色的按钮就可以被激活了.

感谢: http://tbxy.blog.com.cn/archives/2006/1578246.shtml

灰色按钮激活程序的原理 (学习)相关推荐

  1. 小氓男-灰色按钮激活V1.0

    激活灰色按钮 使按钮可用 本地下载 转载于:https://www.cnblogs.com/xiaomangnan/archive/2010/07/13/1778810.html

  2. LIO_SAM程序实现原理学习笔记(二)

    到目前为止已经对程序的大致流程有了比较直观的认识,那么接下来就开始研究每个环节是如何利用代码实现的. utility.h 首先研究一下utility.h文件,LIO_SAM的这个头文件,内容大多是定义 ...

  3. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  4. 超级灰色按钮克星1.4.1309.12

    软件简介:传统的超级灰色按钮克星只能激活传统Windows平台下的按钮.本软件不仅可以激活传统Windows平台下的软件,也可以激活DOTNET平台下的软件. 新版本支持最新Win8 x86/x64操 ...

  5. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  6. 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...

    [跃迁之路][578天]程序员高效学习方法论探索系列(实验阶段335-2018.09.06) @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航, ...

  7. ajax不执行_好程序员Java学习路线分享原生Ajax的使用

    好程序员Java学习路线分享原生Ajax的使用,首先我们先来看一下什么是 AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX 就是 异步.JavaScript ...

  8. .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示

    原文:.Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示 xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块:•android中的io ...

  9. 原创 | 2020年Java程序员应该学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  10. 2020年Java程序员应该学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

最新文章

  1. java gstripe_通过Stripe Connect进行交易
  2. XSS跨站脚本(web应用)——XSS跨站脚本防御(三)
  3. php文件怎么制定编码格式,php文件编码格式对结果有影响
  4. 多处理机的进程调度方式
  5. java enummap_Java EnumMap get()方法与示例
  6. Mybatis in查询List或数组 场景实例
  7. android studio android 测试
  8. 图片管理系统源码_「程序员分享」基于SpringBoot开发的天猫商城源码
  9. Webpack4 学习笔记 - 02:loader 打包静态资源(图片)
  10. hibernate映射文件出现should be mapped with insert=“false“ update=“false“
  11. 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1
  12. openstack 之 kolla安装镜像
  13. android测试工具Demo,Android 测试工具,实时抓被测app crash实现思路
  14. Excel学习系列(1)--以文本存储的数字转换为数字
  15. java rar解压
  16. live2d_二次元 | live2d为你的网站博客增加萌萌哒的看板娘
  17. 3.9 haas506 2.0开发教程-example-oled
  18. Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches
  19. 9类人事管理场景应用,泛微协助HR释放更多工作量
  20. 磁带设备使用方法总结

热门文章

  1. 关于AI拍照搜题的一些想法
  2. Axure RP 8.0激活码 Mac Windows
  3. GitHub 车牌检测识别项目调研
  4. 软件测试:Lab 2 Selenium
  5. linux查看tongweb端口,东方通tongweb linux安装
  6. VMware Workstation 14.1.1 精简特别版
  7. matlab点在直线上运动,求助如何用matlab取出直线上的点
  8. 麻省理工18年春软件构造课程阅读02“Java基础”
  9. Linux内核模块编程入门( 最简单的内核模块编程)
  10. windows批量转换网易ncm音乐