耀云科技
以客户需求为基础,以自身理念方向,成就客户,即成就耀云科技!
文章8164 浏览 1123575

什么是句柄有什么作用(句柄的理解及作用)

昨天小编只是在微头条随手发了一条关于句柄的内容,没想到居然很多人感兴趣,由于微头条的结构限制并不能很好的将句柄讲清楚,今天特地在这里将小编所掌握的关于句柄的知识分享给大家。

句柄是什么

我们先看权威的解释:句柄是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象或实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息;

句柄控制对象的原则是:程序在运行时系统会在为进程分配一块内存,用来存储32位无符号整数,这些数值就是句柄,每个句柄在此处可以理解为一个指针变量,指向系统中一块在进程期间固定的内存。而这块内存不存别的东西,全部储存的是一个个地址,这个地址就是在进程运行期间各对象所在内存的地址。通过这个地址我们就能获取到对应的对象;Windows是一个以虚拟内存为基础的操作系统,在这种环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的需要。对象被移动意味着它的地址变化了,所以在运行过程中我们需要一个唯一且不变的标记来与每个对象对应,已达到不失去对对象的控制权的目的;如下图所示:

句柄的理解及窗体句柄的应用

理解句柄

上面说的还是有点绕,那么我们该怎么去理解才能够更容易的掌握呢?我觉得用身份证来进行印证理解是最贴切的。身份证和句柄一样都是唯一的,且都代表一个具体的实体(对象)。每个人拥有一个唯一的身份证号码,通过身份证号码我们有可以去警察局处查住址登记簿,不管你这个人住址怎么变,只要你每次变更住址都会到警察局登记更新你的新住址,这样我们都能通过身份证号码在住址登记簿找到你的住址,从而找到你这个人。

句柄的理解及窗体句柄的应用

或者你也可以用二级指针的概念来理解句柄,只不过句柄不具备很多指针的功能,比如赋值、获取属性的,在这里只是用来印证理解。

句柄的理解及窗体句柄的应用

查看窗体句柄的工具

这里介绍一个可以快速查看窗体句柄的一个工具,大家在开发中可以通过这个工具辅助自己开发。这个工具就是spy++

句柄的理解及窗体句柄的应用

spy++

这个软件如果大家是用vs开发的话,安装vs一般是默认安装这个软件的,大家按下图所示找一下就可以:

句柄的理解及窗体句柄的应用

窗体句柄有什么用

关于窗体句柄的作用,这里给大家举一个最简单的例子,大家就会有很大的冲动想去学习句柄的使用了。假设现在有一个别人开发好的软件,现在需要向这个软件发一些命令,但是它又没有提供接口怎么办呢?这时候我们可以通过句柄来获取窗体控件对象,并通过windows的API去给对应的对象直接发消息;

句柄的理解及窗体句柄的应用

这里通过windows定义的系统消息WM_GETTEXT(0x000D)来获取控件的text值;当然你还可以干很多事,只要是windows系统有定义的命令都可以发送给控件对象,如果让button点击一下,输入框的值改变等等;获取text值的代码如下(这边是用CSharp实现的,因为开发速度快~~):

这里就不详细讲user32这里的系统API的用法了,因为内容太多,这里只是给大家演示一下windows窗体句柄的一个作用,让大家有一定的了解;

 

版权申明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 394062665@qq.com 举报,一经查实,本站将立刻删除。

最后编辑于:2021-01-06 10:31作者:编程老大叔

上一篇:韩国人的生活水平怎么样(普通韩国人的真实生活)
下一篇:黑链代码是什么(常见的黑链代码)