搜索
首页电脑教程电脑知识屏幕窗口句柄是指什么?

屏幕窗口句柄是指什么?

屏幕窗口句柄是指什么?

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

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

句柄就是用来区分各种内存对象的唯一标识符号,是个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个句柄

以上是屏幕窗口句柄是指什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:Excel办公网。如有侵权,请联系admin@php.cn删除
突袭恢复和硬盘恢复之间的区别突袭恢复和硬盘恢复之间的区别Apr 17, 2025 am 12:50 AM

数据恢复始终是一个加热的话题。要成功地从设备恢复数据,您应该知道它如何存储数据。您可以从此PHP.CN帖子中学习RAID恢复和硬盘恢复之间的区别。

Microsoft Word删除文本Windows 10/11?立即修复!Microsoft Word删除文本Windows 10/11?立即修复!Apr 17, 2025 am 12:48 AM

您会在打字时遇到单词文字消失吗?一些字母甚至段落可能会从您的文档中消失。怎么了?在PHP.CN网站的这篇文章中,我们将仔细研究自动删除文本问题的单词

如何在《守望先锋2》上修复LC-208错误代码?这是指南! -  Minitool如何在《守望先锋2》上修复LC-208错误代码?这是指南! - MinitoolApr 17, 2025 am 12:47 AM

当您尝试登录《守望先锋》 2时,您可能会收到LC-208错误消息,并防止您的游戏连接到游戏服务器。来自PHP.CN的这篇文章介绍了如何修复LC-208守望先锋错误。

Google Drive从File Explorer中消失了 - 轻松批准Google Drive从File Explorer中消失了 - 轻松批准Apr 17, 2025 am 12:46 AM

通常,您可以从文件资源管理器快速访问和编辑Google Drive文件。但是,有时您可能会遇到“ Google Drive从File Explorer中消失”的问题。在这里,php.cn上的这篇文章告诉您如何让Google Drive显示我

如何修复Windows 7欢迎屏幕慢?提示在这里!如何修复Windows 7欢迎屏幕慢?提示在这里!Apr 17, 2025 am 12:45 AM

为什么我的计算机在欢迎屏幕上这么长时间?如何修复Windows 7欢迎屏幕慢?如果您仍然在PC上运行Windows 7并遇到此问题,则您在正确的位置,并且将由PHP.CN提供多个解决方案。

如何在Windows 11中打开凭据管理器?您的6种方法! -  Minitool如何在Windows 11中打开凭据管理器?您的6种方法! - MinitoolApr 17, 2025 am 12:44 AM

是否要使用内置密码管理工具 - 凭据管理器来管理Web和应用程序的登录凭据?如何在Windows 11中打开凭据管理器?在这篇文章中,PHP.CN收集了多种访问该实用程序的方法,并让

如何在Microsoft Defender -Minitool上启用/禁用定期扫描如何在Microsoft Defender -Minitool上启用/禁用定期扫描Apr 17, 2025 am 12:43 AM

Microsft Defender Antivirus具有称为周期性扫描的功能,当您在Windows 11/10设备上安装了另一个防病毒产品时,可以启用该功能。现在,PHP.CN的这篇文章教您如何在WI上启用/禁用定期扫描

Excel超链接不起作用的智能技术Excel超链接不起作用的智能技术Apr 17, 2025 am 12:42 AM

您是否曾经遇到过“ Excel超链接不起作用”的问题?你知道如何处理吗?在PHP.CN的这篇文章中,您可以获得几种可行的解决方案,以摆脱此问题。您将知道专业的数据恢复工具T

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。