当前位置:

首页 > 软件教程 > 屏幕窗口句柄的含义是什么?

屏幕窗口句柄的含义是什么?

获取屏幕的窗口句柄是什么意思了解什么是句柄就好理解了就是获得这个窗口的识别代码句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一(如线程句柄,全局的有另一个标识符)。详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),区域句柄(HRGN)等等。在申请句柄时是要占用资

本文目录

    获取屏幕的窗口句柄是什么意思

    获取屏幕的窗口句柄是什么意思

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

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

    句柄就是用来区分各种内存对象的唯一标识符号,是个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不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

    如何获取控制台窗口句柄

    1.调用 GetConsoleTitle() 来保存当前的控制台窗口标题。

    2.调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。

    3.调用 Sleep(40),以确保已更新窗口标题。

    4.调用 FindWindow(NULL, uniquetitle),以获取 HWND,此调用将返回 HWND, 如果操作失败,将返回 NULL。

    5.从步骤 1 中,若要恢复原始窗口标题检索调用 SetConsoleTitle() 的值。

    应该测试结果的 HWND。例如可以测试是否返回的 HWND 对应于当前进程在 HWND 上调用 GetWindowText() 并将结果与 GetConsoleTitle() 进行比较。

    示例代码

    下面的函数中检索当前控制台应用程序窗口句柄 (HWND)。如果此函数成功,则返回值是控制台窗口的句柄。如果此函数失败,则返回值为 NULL。省略一些错误检查,为简洁起见。

    HWND GetConsoleHwnd(void)

    {

    #define MY_BUFSIZE 1024 // Buffer size for console window titles.

    HWND hwndFound; // This is what is returned to the caller.

    char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated

    // WindowTitle.

    char pszOldWindowTitle[MY_BUFSIZE]; // Contains original

    // WindowTitle.

    // Fetch current window title.

    GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);

    // Format a "unique" NewWindowTitle.

    wsprintf(pszNewWindowTitle,"%d/%d",

    GetTickCount(),

    GetCurrentProcessId());

    // Change current window title.

    SetConsoleTitle(pszNewWindowTitle);

    // Ensure window title has been updated.

    Sleep(40);

    // Look for NewWindowTitle.

    hwndFound=FindWindow(NULL, pszNewWindowTitle);

    // Restore original window title.

    SetConsoleTitle(pszOldWindowTitle);

    return(hwndFound);

    }

    50分如何获取桌面所有窗口的句柄

    #include

    #include

    using namespace std;

    //用于EnumWindows的回调函数

    BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lparam)

    {

    vector *pvec = (vector*)lparam;

    pvec->push_back(hwnd);

    return TRUE;

    }

    void main()

    {

    vector vec;

    EnumWindows(EnumProc,(LPARAM)&vec);

    }

    这个是win32控制台程序项目里写的,如果要在MFC下的话,只需包含

    #include 并using namespace std;

    EnumProc定义在前面,按钮响应函数里添加main函数里的那两句就可以了。

    我这里测试获取到了407个句柄

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    typora怎么高亮 文本标记语法设置
    typora怎么高亮 文本标记语法设置

    本教程演示如何在 Windows 版 Typora 中开启 Highlight 高亮功能,通过双等号语法标记重点文本,并展示如何编辑、取消高亮及验证源码保存状态。

    讯飞智作平台 在线创作功能介绍
    讯飞智作平台 在线创作功能介绍

    了解讯飞智作平台的在线创作流程:从文字配音到数字人视频生成,再到AIGC工具箱的素材处理。通过具体案例演示如何选择合适的功能入口、调整参数及核对成品权益,适合需要快速制作音频或播报视频的用户参考。

    gemini 官网 入口网页版登录访问方法
    gemini 官网 入口网页版登录访问方法

    本文详细介绍 Gemini 官方网页版入口地址、个人与组织账号登录流程、运行环境要求、账号体系差异对比及常见访问异常的排查解决方法。

    正版steam官网入口登录下载安装操作教程
    正版steam官网入口登录下载安装操作教程

    针对初次接触Steam平台的玩家,提供正版Steam官网网址识别、客户端官方安装包下载、本地安装配置及账号安全注册登录的详细图文操作教程。

    鼠标宏设置软件怎么设置?详细操作教程
    鼠标宏设置软件怎么设置?详细操作教程

    针对各类支持驱动配置的鼠标,系统梳理鼠标宏设置软件的核心设置逻辑、全流程操作步骤、运行模式选择与排错验证方法,帮助读者准确掌握宏功能的配置与使用。

    endnote怎么插入文献 Word添加引文步骤
    endnote怎么插入文献 Word添加引文步骤

    详解如何在 Word 中使用 EndNote 插件插入文献引用。涵盖从库中搜索记录、插入引文、选择样式到更新参考文献表的步骤,确保引文格式准确且可随时更新。

    再漫画官网首页入口及在线观看方法
    再漫画官网首页入口及在线观看方法

    了解如何进入再漫画官网首页,并通过界面导览熟悉分类浏览、搜索查找及在线阅读器的基本使用方法,提升阅读体验。

    Codex自动审查、缓存与额度重置有什么区别?
    Codex自动审查、缓存与额度重置有什么区别?

    针对Codex近期更新引发的讨论,本文厘清自动审查的功能边界,区分即时额度恢复与留存重置卡的不同,帮助用户理性评估更新价值,避免对缓存和权益产生误解。

    讯飞绘文ai AI写作功能介绍
    讯飞绘文ai AI写作功能介绍

    了解讯飞绘文AI写作功能:涵盖选题推荐、智能起稿、风格设定、知识融合及稿件校对。通过社区活动案例,掌握从构思到排版的完整操作逻辑,提升内容创作效率。

    讯飞绘文需要下载吗 网页版使用方式
    讯飞绘文需要下载吗 网页版使用方式

    想了解讯飞绘文是否必须安装软件?其实网页版即可满足日常文案创作需求。本文通过实际案例,一步步展示如何在浏览器中登录讯飞绘文、创建写作任务并保存结果,无需下载客户端也能高效工作。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。