获取窗口句柄

时间:2026-01-13 20:10:58编辑:莆田seo君

获取窗口句柄有什么用

了解什么是句柄就好理解了


就是获得这个窗口的识别代码


句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一
(如线程句柄,全局的有另一个标识符)。

详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),
文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),
区域句柄(HRGN)等等。

在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。
而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释
放。
>
如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话,
大多数会使用。
再Windows系统中,句柄(我一直觉得这个词翻译得特别别扭)分为三大类:Kernel
Handle、UserHandle和应用程序自定义的Handle。
KernelHandle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文
件、信号等。但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值
(其实应该是Obfuscator,MicrosoftBugs(R):),生成Handle后将Handle与这个值异
或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。这些
Handle和索引的对象是由KRNL32.DLL和VMM32.VXD共同管理的,所以称之为Kernel
Handle。
UserHandle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象
的开头,有一个偏移量。同样,这些对象是由USER32.DLL管理的。
第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

我想问下 我获取了窗口句柄 这个有什么用呢 然后我怎么用这个窗口句柄做一些事情呢

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。

  为什么我们需要句柄?   更准确地说,是windows需要句柄。windows需要向程序员提供必要地编程接口   ,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装地考虑,wi   ndows并不想向程序员返回指针。指针包含了太多的信息。首先指针给出了对象存储   的确切位置;其次,要操作一个指针,程序员必须知道指针所指对象的内部结构特   征,也即,windows必须向程序员暴露相应的数据结构,而这些数据结构也许是操作   系统想向程序员隐藏的。   如果说COM技术向用户隐藏了数据,只暴露了接口并只允许按接口定义的方法操   作数据的话,句柄这种方式则允许你按自己的方式直接操作数据,但windows又不向   你直接暴露数据。直接操作数据是程序员需要的,不暴露数据是windows所需要的,   句柄封装方式实现了各取所需


上一篇:游戏王arcv88

下一篇:没有了