精华内容
下载资源
问答
  • windows获取句柄

    2011-11-07 14:32:51
    windows获取句柄
  • 如题 怎么获取所有的windows窗口句柄 怎么获取所有的windows窗口句柄 怎么获取所有的windows窗口句柄 怎么获取所有的windows窗口句柄 怎么获取所有的windows窗口句柄
  • Root Windows窗口句柄

    2013-02-09 08:00:55
    此小程序《Root Windows》可以坐标取得窗口的句柄,然后在树状控件里显示窗口的文本,句柄号,类名,父句柄,并且可以输出窗口的句柄到文本文件。相对《spy++》来说,可查看更多详细资料。取得登陆窗口的好工具。
  • PasswordSpy 程序 通过获取指定windows窗口句柄获取相应的密码窗口监控相应的窗口值的变化。
  • windows 句柄

    2014-06-28 09:32:24
    windows中,句柄非常常见。如文件句柄,事件句柄,线程句柄,进程句柄等等。那么ju

        windows中,句柄非常常见。如文件句柄,事件句柄,线程句柄,进程句柄等等。所以今天来介绍一下windows句柄。

    一、内核对象

        说到句柄,不得不提到内核对象。内核对象是操作系统内核创建的对象,是一个数据结构,且这个数据结构只能由操作系统内核访问,应用程序无法直接访问这些数据结构。为了强化这种访问安全性,windows使用句柄来间接访问内核对象。windows也使用句柄来访问GDI对象。

    二、句柄

        每个进程都有一个句柄表,句柄索引号代表句柄值(不完全正确,windows对这个值还做了些处理,我们可以暂时这么认为,方便理解)。句柄表中,每一项包含了跟相应内核对象的信息,如指向内核对象的指针,访问掩码等。

        需要注意的是,句柄与进程是强相关的,也就是说,句柄只在所属进程有效,进程A中的句柄h1指向内核对象kobj1,如果在进程B中,句柄h1可能是无效的,也有可能指向的是另一个内核对象kojb2。 另外,也有可能有多个句柄指向同一个内核对象,所以,内核对象使用了计数,当计数减小到0的时候,内核对象才会被销毁。所以,当不需要使用句柄的时候,要及时调用CloseHandle,CloseHandle会给计数-1。当然,在进程退出时,系统会扫描句柄表,自动关闭每一个句柄。

    三、利用句柄,进程间共享内核对象

    1、父子进程,句柄继承

        在创建内核对象时,可以标记返回的句柄是否可以继承;创建子进程时,给hInheritHandles参数传入TRUE,则系统会将父进程中可以继承的句柄都完整的复制到子进程的句柄表中。

    2、为内核对象命名

        (1)可以创建命名的内核对象,但有些内核对象不支持命名。内核对象被创建后,可以通过create/open系列api获取指向同一个内核对象的多个句柄。不过,windows并没有专门的机制来保证名称是唯一的,而且所有对象类型都共用一个命名空间。也就是说,当有一个名为A的Event时,不能再创建一个名为A的File。

        (2)终端服务命名空间

        该空间主要由服务使用。此外,每个客户端session都一个自己的命名空间,回话之间不能相互访问对方的对象。

        一个服务的命名内核对象始终位于全局命名空间中,终端服务,则位于自己的本地命名空间中,如果要强制放入全局命名空间,可以加上“Global\'前缀,也可以通过加上”Local\“来放入本地命名空间。注意,Global和Local都是保留关键字,不应在对象名称中使用。也可以用"session\<当前回话Id>"来作为前缀,且只能用当前回话id。

        (3)专有命名空间

        自定义前缀,并把它当成自己的专有命名空间使用,负责创建内核对象的服务器进程将定义一个边界描述符(boundary descriptor),对命名空间的名称自身进行保护。

    3、复制对象句柄

        较少用,必须要两个进程之间共享内核对象(可以通过第三个进程作为媒介),才会使用。


    展开全文
  • Windows句柄

    千次阅读 2018-05-04 10:49:27
    句柄windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。在windows环境中,句柄是用来标识项目的,这些项目包括: (1)模块(module) (2)任务(task) (3)实例(instance) (4)文件...

    句柄在windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。在windows环境中,句柄是用来标识项目的,这些项目包括:

    (1)模块(module)

    (2)任务(task)

    (3)实例(instance)

    (4)文件(file)

    (5)内存块(block of memory)

    (6)菜单(menu)

    (7)控制(control)

    (8)字体(font)

    (9)资源(recource),包括图标(icon),光标(cursor),字符串(string)等

    (10)GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域(region),以及设备描述表(device context)

    Windows是一个以虚拟内存为基础的操作系统,在这种环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的需要。对象被移动意味着它的地址变化了。由于地址总是如此变化,所以Windows操作系统为各应用程序腾出一些内存地址,用来专门登记各应用对象在内存中的地址变化,而这地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

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

    句柄地址(稳定)->记载着对象在内存中的地址->对象在内存中的地址(不稳定)->实际对象。但是,必须注意注意的是,程序每次重新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确是不一样的。

    展开全文
  • windows 句柄句柄

    2017-07-05 10:42:58
    句柄句柄

    句柄

        Windows支持的句柄是一个索引,指向该句柄所在进程的句柄表中的一个表项。例如,在C运行库中,文件操作使用句柄来表示,每当应用程序创建或打开一个文件时,只要此创建或打开操作成功,则C运行库返回一个句柄。以后应用程序对文件的读写操作都使用此句柄来标示该文件。
        handle是一个32位的数,其中2~10位表示0级表的索引,11~20位表示1级表的索引,21~30位表示2级表的索引。
        struct {
           ULONG_PTR   TagBits2:2
           ULONG_PTR   LowIndex:HANDLE_LOW_BITS (2~10)
           ULONG_PTR   MidIndex:HANDLE_HIGH_BITS (11~20)
           ULONG_PTR   HighIndex:HANDLE_HIGH_BITS (21~30)
           ULONG_PTR   KernelFlag:1
        }; 
    

    句柄表

        句柄表是一个多层结构。
        struct _HANDLE_TABLE{
            ULONG_PTR TableCode;
            ...
        }
        TableCode域是一个指针,指向句柄表的最高层表项页面,它的低2位的值代表了当前句柄表的层数。也就是说,如果TableCode的最低2位为0,说明句柄表只有一层;如果TableCode的最低2位为1,则说明句柄表有两层;如果TableCode的最低2位为2,则说明句柄表有三层。
    

    句柄表项

        struct _HANDLE_TABLE_ENTRY{
            PVOID Object;
            ...
        }
        Object指针指向句柄所代表的的内核对象,它的最低3位有特别含义:第0位OBJ_PROTECT_CLOSE,表示调用者是否允许关闭该句柄;第1位OBJ_INHERIT指示该进程所创建的子进程是否可以继承该句柄,即是否将该句柄项拷贝到它们的句柄表中;第2位OBJ_AUDIT_OBJECT_CLOSE,指示关闭该对象时是否产生一个审计事件。
    

    将一个句柄解析成相应的内核对象

        首先,一个有效的句柄有4中可能:
        -1,代表当前进程
        -2,代表当前线程
        负值,其绝对值为内核句柄表中的索引,即system进程的句柄表
        正值,当前进程的句柄表中的索引
    
        下面代码根据TableCode和Handle获得object。
        /* Get the table code */
        TableBase = HandleTable->TableCode;
    
        /* Extract the table level and actual table base */
        TableLevel = (ULONG)(TableBase & 3);
        TableBase &= ~3;
    
        PointerArray = (PVOID*)TableBase;
        HandleArray = (PHANDLE_TABLE_ENTRY)TableBase;
    
        /* Check what level we're running at */
        switch (TableLevel)
          {
          case 2:
             /* Get the mid level pointer array */
              PointerArray = PointerArray[Handle.HighIndex];
    
             /* Fall through */
          case 1:
    
             /* Get the handle array */
              HandleArray = PointerArray[Handle.MidIndex];
    
             /* Fall through */
          case 0:
    
             /* Get the entry using the low index */
              Entry = &HandleArray[Handle.LowIndex];
    
             /* All done */
              break;
          default:
              ASSERT(FALSE);
              Entry = NULL;
       }
    
    展开全文
  • 开发或调试辅助工具,用于分析Windows下所有运行的应用程序,可以查找分析句柄及消息
  • Windows 查看句柄占用情况的工具有哪些呢? 很多时候我们定位问题都涉及到文件本占用的情况,然而我们又无法确定到底是哪个进程占用了这个文件。 下面我们来推荐查看句柄占用的两种方法: 1.系统工具 resmon....

    Windows 查看句柄占用情况的工具有哪些呢?

    很多时候我们定位问题都涉及到文件本占用的情况,然而我们又无法确定到底是哪个进程占用了这个文件。

    下面我们来推荐查看句柄占用的两种方法:

     

    1.系统工具 resmon.exe

    支持搜索,比如查看 test.txt这个文件被谁打开了

    2.Process Explorer

    是微软在维护的一款工具,非常好用,下载地址:

    下载地址

    点击菜单栏上的Find或者直接快捷键 Ctrl + F,可以进行搜索

     

    展开全文
  • Windows常用句柄类型

    2007-08-31 02:34:00
    Windows常用句柄类型颜色调色板句柄HPALETTE在设备上画图时用于指明线型的笔的句柄HPEN窗口句柄HWND菜单句柄HMENU应用程序实例句柄HINSTANCE图标句柄HICON字体句柄HFONT设备描述表句
  • 获取windows窗口句柄

    千次阅读 2019-05-31 14:11:10
    目前有几种方法可以获得ChildWindow句柄;FindWindowEx(使用父句柄,加上窗口标题),GetWindow(使用父句柄和Z-Order)和EnumChildWindows。 想使用像FindWindowEx这样的东西,但这需要了解FindWindowsEx使用的...
  • 《Root Windows窗口句柄》可以坐标选取窗口,然后按Root可以解析出各个子窗口的文本内容,句柄号,类名和父窗口,在树状控件里显示。
  • Windows 句柄

    2010-04-13 20:40:00
    原文地址: ... 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯一的句柄句柄也可以映射到唯一的对象。2.为什么我们需要句柄? 更准确地说,
  • c++ windows窗口句柄控制

    千次阅读 2018-07-31 10:39:18
    c++ windows窗口句柄控制 1.首先我们可以通过spy++获取到窗口的句柄以及窗口的类名,这个是十分简单的,比如说底部任务栏的是 类名:Shell_TrayWnd 模块名:EXPLORER 标题是:空 2.找到窗口的句柄,好了到这一步...
  • windows进程句柄

    千次阅读 2012-06-13 02:49:16
    句柄windows应用程序用来表示资源的一个符号,几乎所有的资源对于应用程序来说都表示为一个句柄。比如文件,用CreateFile打开一个文件,成功则会得到一个句柄,其实就是一个32位无符号整数。“当一个进程根据名称来...
  • windows文件句柄修改

    千次阅读 2014-01-07 09:39:46
    找到如下注册表分支: ... – – – Windows NT  – – – – CurrentVersion  – – – – – Windows  在右侧窗格中可以看到名为“GDIProcessHandleQuota”与“USERProcessHandleQuota”的注册表项;
  • Windows句柄介绍

    2015-05-07 15:09:56
    windows中,句柄是和对象一一对应的32位无符号整数值。对象可以 映射到唯 一的句柄句柄也可以映射到唯一的对象。  2.为什么我们需要句柄?  更准确地说,是windows需要句柄windows需要向程序员提供必要地...
  • 关于windows句柄

    千次阅读 2011-06-27 16:59:00
    windows核心编程》里提到了“伪句柄”一词,故名思议,它并不是真的句柄,有时候不会达到你想要的效果。边看代码,边解释代码如下: // 伪句柄.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include...
  • windows 句柄理解

    千次阅读 2011-07-18 23:52:14
    windows句柄有很多类型,有的是指针,有的是指向指针的指针,有的是一个数组索引。 但在编程中不需要在乎句柄是怎么样的,因为winapi调用掩盖了句柄操作的细节。为什么我们需要句柄?  更准确地说,是windows...
  • Windows句柄 详解

    千次阅读 2012-11-30 16:28:45
    在使用很多函数的时候,我们都需要获得一个对象的句柄,而某些函数返回的是伪句柄。伪句柄本身不会打开内核对象的句柄表,因此内核对象的使用计数就不会增加。它本身就只指向调用它的主调进程或线程。会因为调用者的...
  • 深入了解Windows句柄到底是什么

    万次阅读 多人点赞 2013-12-30 11:02:23
    总是有新入门的Windows程序员问我Windows句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我...
  • Windows句柄和ID的区别

    千次阅读 2015-10-10 10:39:48
    Windows中什么是句柄、ID,以及句柄和ID的区别
  • Windows句柄表学习笔记 —— 句柄表&全局句柄表前言句柄表实验一:在WinDbg中查看句柄表第一步:打开一个Win32窗口程序第二步:编译并运行以下代码第三步:查看运行结果第四步:在WinDbg中定位句柄表句柄表结构...
  • GDIProcessHandleQuota项设置GDI句柄数量,默认值为2710(16进制)/10000(10进制),该值的允许范围为 256 ~ 16384 ,如果系统配置的内存为2G或更多,不妨将其设置为允许的最大值 16384(10进制); ...
  • Windows 10查看进程句柄数量

    千次阅读 2020-08-10 14:23:01

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,020
精华内容 60,008
关键字:

window10句柄