`
xuexing
  • 浏览: 24025 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

计算机中的“句柄”是什么意思?

阅读更多

所谓句柄实际上是一个数据,是一个Long (整长型)的数据。

句柄是 WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。


句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象


本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。


但是必须注意的是程序每次重新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
分享到:
评论

相关推荐

    什么是句柄

    在计算机科学领域,句柄(Handle)是一个重要的概念,尤其是在操作系统和编程语言中。从直观的角度理解,句柄就像一个“把手”,通过它,我们可以轻松地“抓取”和操作背后复杂的数据结构或资源,而不必直接处理其...

    MFC 句柄的理解

    在计算机术语中,句柄通常是一个32位的无符号整数,但它不直接指向内存中的对象,而是作为查找对象的一个索引。这种间接性保证了对象的安全性,因为只有操作系统才能直接访问和修改内核对象的状态,而不是应用程序。...

    易语言句柄查找工具

    在计算机编程领域,特别是在Windows系统环境下,"句柄"(Handle)是一个重要的概念。句柄是操作系统为应用程序提供的一种机制,它用于标识和引用系统中的对象,如窗口、文件、设备等。在本篇文章中,我们将深入探讨...

    易语言模糊标题取句柄

    易语言是一种基于中文编程的计算机程序设计语言,它旨在降低编程技术门槛,让不懂英文的用户也能进行软件开发。在易语言中,“模糊标题取句柄”是一个常见的编程任务,通常用于窗口管理或用户界面自动化操作。句柄是...

    易语言鼠标获取窗口句柄源码

    在IT领域,编程是创造和控制计算机执行特定任务的关键手段。易语言是一种为非专业程序员设计的简单易学的编程语言,它强调“易”字,使得编程变得更加直观和便捷。本文将深入探讨如何在易语言中实现鼠标获取窗口句柄...

    句柄查看精灵 3.0

    在计算机编程和系统调试领域,句柄(Handle)是一个非常关键的概念。句柄是操作系统为应用程序提供的一种访问和操作系统资源的抽象标识,比如文件、窗口、设备、线程等。句柄查看工具如“句柄查看精灵 3.0”就扮演着...

    [批处理]重定向中的秘密(句柄备份)

    重定向是计算机编程中的一个重要概念,主要用于改变程序的输入或输出位置。通过使用特定的符号,可以在命令行环境中改变输入来源或输出目标,从而实现更加灵活的数据处理。 #### 二、重定向符号及其作用 在批处理...

    查找窗口句柄软件

    窗口句柄在计算机编程,尤其是Windows操作系统编程中扮演着至关重要的角色。窗口句柄(HWND)是Windows API提供的一种机制,用于唯一标识一个窗口。它是一个整数值,由系统分配,程序员通过这个值可以对特定的窗口...

    易语言遍历方法枚举窗口句柄

    标题中的“易语言遍历方法枚举窗口句柄”是一个关于Windows编程的知识点,主要涉及易语言(EasyLanguage)这个编程环境以及如何在其中遍历并枚举窗口句柄。易语言是中国的一种特色编程语言,它以简洁明了的汉语词汇...

    易语言源码易语言句柄操作类模块源码.rar

    句柄在计算机编程中是一个非常重要的概念,特别是在Windows操作系统环境下。句柄是系统分配给对象(如窗口、进程、线程、文件、设备等)的一个唯一标识符,它不是对象本身,而是一个间接访问对象的凭证。通过句柄,...

    实时获得窗口句柄

    在计算机编程领域,尤其是涉及到Windows操作系统交互时,"实时获得窗口句柄"是一个重要的概念。窗口句柄(HWND)是Windows API提供的一种机制,用于唯一标识应用程序中的一个窗口。它是系统分配给每个窗口的一个整数...

    易语言无模块去句柄教程

    在计算机编程中,句柄是一个用于标识对象的唯一标识符,就像一个门牌号一样,让程序能够找到并操作特定的资源或对象。在Windows操作系统中,句柄广泛用于标识窗口、控件、设备等。在易语言中,通过获取句柄,我们...

    通过进程ID找到窗口句柄.

    在计算机编程领域中,有时我们需要与操作系统进行更深层次的交互,例如:为了自动化测试、系统监控或是其他高级应用的目的,我们需要通过进程ID(Process ID, PID)来查找特定窗口的句柄(Handle)。这涉及到对...

    句柄和指针的区别

    **句柄**与**指针**虽然在表面上看似相似,但在计算机编程尤其是Windows环境下,它们有着本质的区别。理解这两种概念的不同对于掌握Windows编程至关重要。 #### 二、句柄的概念 - **定义**:句柄是Windows操作系统...

    句柄查看精灵V2.3

    在计算机编程和系统调试领域,句柄扮演着至关重要的角色。句柄是操作系统分配给各种资源(如窗口、文件、设备等)的一个唯一标识符,它使得应用程序能够通过这个标识来访问和操作这些资源。"句柄查看精灵V2.3"是一款...

    进程取句柄

    - **进程**:在计算机科学中,进程是正在执行的程序的实例,它拥有自己的内存空间,包括代码、数据和堆栈。在Windows操作系统中,每个进程都有一个独立的地址空间。 - **句柄**:句柄是Windows API中用来访问和...

    进程管理工具 可用来分析事件对象句柄

    在计算机系统中,进程是执行中的程序实例,它包含了程序的内存映像、打开的文件、网络连接以及其他系统资源。进程管理工具能够帮助用户查看系统中当前运行的所有进程,包括它们的CPU使用率、内存占用、启动时间等...

    C#解决“创建窗口句柄时出错”异常

    标题中的"C#解决‘创建窗口句柄时出错’异常"指的是在使用C#编程时遇到的一个常见问题,即在创建窗口或者控件时遇到了错误,导致无法成功创建窗口句柄(HWND)。这个问题通常与Windows API的交互有关,因为创建窗口...

    易语言枚举内核对象句柄

    在计算机编程领域,尤其是涉及到操作系统级别的操作时,"内核对象句柄"是一个重要的概念。易语言,一种中文编程环境,提供了对系统底层资源管理的支持,包括枚举内核对象句柄的功能。本文将深入探讨这个主题,帮助你...

Global site tag (gtag.js) - Google Analytics