首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从HWND获取窗口类名称和ID?

从HWND获取窗口类名称和ID的方法如下:

  1. 窗口类名称:

要从HWND获取窗口类名称,可以使用GetClassName函数。该函数的原型如下:

代码语言:c++
复制
int GetClassName(
  HWND   hWnd,
  LPTSTR lpClassName,
  int    nMaxCount
);

参数说明:

  • hWnd:目标窗口的句柄。
  • lpClassName:指向接收窗口类名称的缓冲区的指针。
  • nMaxCount:缓冲区的大小,以字符为单位。

示例代码:

代码语言:c++
复制
#include<Windows.h>
#include<iostream>
#include<vector>

std::string GetClassNameFromHWND(HWND hwnd) {
    std::vector<char> className(256);
    GetClassName(hwnd, &className[0], className.size());
    return std::string(className.begin(), className.end());
}

int main() {
    HWND hwnd = FindWindow(NULL, "计算器");
    std::string className = GetClassNameFromHWND(hwnd);
    std::cout << "窗口类名称:"<< className<< std::endl;
    return 0;
}
  1. 窗口ID:

要从HWND获取窗口ID,可以使用GetWindowLong函数。该函数的原型如下:

代码语言:c++
复制
LONG GetWindowLong(
  HWND hWnd,
  int  nIndex
);

参数说明:

  • hWnd:目标窗口的句柄。
  • nIndex:要检索的值的偏移量。在这种情况下,应该是GWL_ID,其值为-12

示例代码:

代码语言:c++
复制
#include<Windows.h>
#include<iostream>

int GetWindowIDFromHWND(HWND hwnd) {
    return GetWindowLong(hwnd, GWL_ID);
}

int main() {
    HWND hwnd = FindWindow(NULL, "计算器");
    int windowID = GetWindowIDFromHWND(hwnd);
    std::cout << "窗口ID:"<< windowID<< std::endl;
    return 0;
}

以上就是从HWND获取窗口类名称和ID的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#后台代码调转到窗口设计器,窗口ID,句柄,名区别

但是在当前窗口后台代码选中其它窗口名查看其它窗口设计时,使用shift+F7还是跳转到到当前窗口,所以我们需要先按F12转到定义,再按shift+F7转到窗口设计。...使用F12转到定义打开的页面为活动状态,需要按一下标题中间的钉子才能切换到保持打开状态,不然它会自动关闭 在这里多聊几句窗口ID(name属性)句柄的关系: 句柄是窗口资源的标识,它标识资源在系统中所占用的内存块...除了窗口句柄之外,任何一种资源都有它自己的句柄,比如光标句柄、位图句柄等。窗口ID窗口在应用程序中的唯一标识,通过窗口ID可以获取窗口句柄。...同一个命名空间下窗口ID是唯一的,如果引用别的命名空间窗口,格式为:命名空间.窗口ID窗口设计名(text属性): 前台显示名字,没有唯一性。...窗口文件名字(解决方案下窗口目录名): 该名是该窗口存在项目文件夹的名字,也具唯一性,它包含了许多子定义,但它普通的自定义不一样,引用时是命名空间.窗口ID,而不是命名空间.窗口

69541

解读小程序的新能力---获取ID名称等群信息

5月8日微信小程序有公布了一个新功能:获取ID名称等群信息,官方有一句话是这么介绍它的用处的: 现在,通过最新的接口能力,开发者可以通过群ID判断用户是否来自同一个微信群,同一个群内的用户之间可以更好地使用小程序进行协作...第二步.在需要获取群信息(id或者群名称)的地方执行getShareInfo方法,并把shareTicket传进去 ?...然后你就能把小程序分享到某个群里,别人打开的时候就能获取相关的群信息了,注.群id会以加密的方式放在回调函数的参数中的encryptedData里,这个密文一般是传送到服务端,然后服务端用对应的解密方法来解密...,这样才能获取ID,具体解密方法可以参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html 说完用法,我们来用扯扯这东西有什么用处...在这能力出现前,我们要做协同合作的小程序应用的话,往往遵循的程序设计思路是: 新建一个事件(具备了一个唯一id)->传播一个带有这个id的小程序落地页->打开这个落地页即可参与协同合作 显然,在某些严谨的协助交互里

3.3K60

win32程序之子窗口编程

一丶简介.什么是子窗口   在前边我们已经讲解了窗口的本质.以及如何注册窗口跟创建窗口. 还讲了消息循环....名修改为EDIT. 父窗口句柄修改为我们的主窗口句柄.  并且为子窗口设置创建类型.  以及子窗口标识符即可....重要参数标注出来. 1.窗口名. 我们是使用的Windows默认的窗口名.所以填写EDIT 2.窗口风格. 窗口风格是使用的CreateWindow 中MSDN提供的默认风格....但是我们如何知道是哪个消息.? 既然我们知道了子窗口改变状态会发送消息.那么我们可以调试一下.打印一下消息. ? 也就是在我们父窗口的消息处理回调中打印一下消息....SetDlgItemText(hWnd, IDC_MY_EDIT_ONE, TEXT("设置到编辑框的内容")); //此API时设置指定窗口中控件ID的显示名称.我们给编辑框设置.所以ID是编辑框的

1.8K20

【Win32】初识Win32编程

每个窗口都具有窗口,基于窗口创建窗口。 每个窗口都具有一个名称,使用前必须注册到系统。 在操作系统内核里存着就叫窗口,在程序里存着就叫窗口。...窗口创建 窗口创建: CreateWindow / CreateWindowEx CreateWindow内部是如何实现的 系统(CreateWindows函数内部)根据传入的窗口名称,在应用程序局部窗口中查找...消息循环的阻塞 GetMessage-系统获取消息,将消息系统中移除,阻塞函数。...将消息投递到程序的消息队列中 根据消息消息队列之间使用关系,将消息分成两 队列消息-消息的发送获取,都是通过消息队列完成。...GetMessage-消息队列中获取消息 PostMessage-将消息投递到消息队列 常见的消息队列:WM_PAINT、键盘、鼠标、定时器 非队列消息-消息的发送获取,是直接调用消息的窗口处理函数完成

1.9K110

Python—-pywin32如何获取窗口句柄

Python—-pywin32如何获取窗口句柄 一:介绍要用到的库 二:显示窗口的属性 1....获取所有窗口的句柄 2.获取窗口的子窗口句柄 3.获取句柄的标题 4.获取窗口名 三、实际操作 1.置顶取消 2.显示隐藏窗口 四、案例演示 显示隐藏托盘 halo,各位读者,本栏目开设一个围绕着...:%s' % (title)) return title >>窗口标题:设置 4.获取窗口名 def get_clasname(hwnd): clasname = win32gui.GetClassName...(hwnd) print('窗口名:%s' % (clasname)) return clasname >>窗口名:ApplicationFrameWindow 三、实际操作 1.置顶取消...win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE | win32con.SWP_NOMOVE) 2.显示隐藏窗口 根据窗口名称获取句柄 #根据窗口名称获取句柄

3K61

反调试专题丨反调试之最朴实的招式最致命

,以及这些进程使用的堆、模块线程。...,就像这一块:这里用到函数FindWindow,函数介绍如下://检索顶级窗口的句柄,该窗口名称窗口名称与指定的字符串匹配。...此函数不搜索子窗口。此函数不执行区分大小写.//的搜索。若要搜索子窗口,请指定的子窗口开始,请使用 FindWindowEx 函数。...如果 lpClassName 指向字符串,则指定窗口名。名可以是向 RegisterClass 或 RegisterClassEx 注册的任何名称,也可以是预定义控件名称中的任何名称。...[in, optional] lpWindowName类型: LPCTSTR窗口名称 (窗口的标题) 。如果此参数为 NULL,则所有窗口名称都匹配。

17330

WINDOWS核心编程--Windows程序内部运行机制

函数来创建窗口时允许它的hInstance参数注册窗口时传递给 RegisterClass 的 hInstance参数不同。...CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。...ID是在resource.h的宏 他的lpIconname是一个指针,指向资源 第七个–hCursor是一个光标资源 第八个hbrBackground—窗口的背景画刷句柄 第九个lpszMenuName...hMenu, hInstance, lpParam)\ lpClassName 指定窗口名称----------注册过的名字 lpWindowName指定窗口名称---------标题栏名字 dwStyle...Copy to Clipboard BOOL UpdateWindow( HWND hWnd ); 消息循环 调用GetMessage 不断消息队列取出消息,并进行相应。

1.4K50

Windows窗口

就和面向对象技术中的实例对象一样,Windows中也提供了窗口窗口实例的概念,在创建一个窗口对象是必须要指定对应的窗口名称,所有的窗口必须要先注册到系统中才能进行实例化创建。...) 窗口获取所属的窗口名称 int GetClassName( HWND hWnd, //[IN]窗口句柄 LPTSTR lpClassName..., //[OUT]窗口名 int nMaxCount //[IN]名的长度 ); 窗口获取所属的窗口的信息 我们可以通过GetClassName...当然系统还提供了一个直接窗口获取所属信息的方法: DWORD GetClassLong( HWND hWnd, //窗口句柄 int nIndex...) GCL_WNDPROC 窗口的回调函数 除了可以获取一个窗口所属的窗口的信息外,对于一些信息还可以进行设置改变, 这就可以通过如下函数来操作: DWORD SetClassLong( HWND

1.3K20

C# 窗体常用API函数 应用程序窗体查找

); 其中hWnd就是目标窗体的句柄 (3)根据窗体的窗口名称获得目标窗体 [DllImport("coredll.dll", EntryPoint = "FindWindow")]private....exe来查找窗口所属的窗体的标题。...lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。返回值:如果函数成功,返回值为具有指定窗口名的窗口句柄。...} nMaxCount: Integer {缓冲区大小} ): Integer; {返回名大小; 失败返回 0}获取指定窗口名 GetNextWindow( hWnd...= 5; {子窗口}获取与指定窗口具有指定关系的窗口的句柄 GetWindowTextLength( hWnd: HWND {窗口句柄} ): Integer; {返回窗口标题长度} 获取窗口标题长度

3.9K70

【读书笔记】Windows程序设计5

; WNDCLASS wndclass; //水平尺寸垂直尺寸 wndclass.style = CS_HREDRAW | CS_VREDRAW; //WndProc窗口窗口过程函数:处理传递给所有基于该窗口创建的窗口的所有消息...wndclass.lpszMenuName = NULL; //窗口名称 wndclass.lpszClassName = szAppName; //为应用程序的窗口注册一个窗口 if...,szAppName,MB_ICONERROR); return 0; } //基于窗口创建一个窗口 hwnd = CreateWindow(szAppName, // 窗口名称...// 创建参数 //在屏幕中显示窗口 ShowWindow(hwnd, iCmdShow); //指示窗口对其自身进行重绘 UpdateWindow(hwnd); //消息队里获取消息...); 其中,设备环境句柄指的是窗口句柄为hwnd窗口客户区,GetDC函数返回的句柄可以在整个客户区绘制,并且GetDCReleaseDC函数并不使任何客户区的无效区域变为有效。

2.4K10

干货丨windows内核www漏洞利用手法(修改版)

BitMap 稳定复用 lpszMenuName 的内存地址了 while (I < 0x500){ ++I; CreateBitmap(0xD90, 0x01, 0x01, 0x08, Data); } 如何获取...8 -session ---- 释放 Palette DeleteObject(HPalette); ---- 获取 Palette 地址 创建窗口时通过设置窗口菜单名称,可以分配任意大小的...,使用 HMValidateHandle 函数(BITMAP一节中有介绍)获取tagCls.lpszMenuName 指向的地址,此处为占坑地址,释放窗口,释放窗口,创建Palette结构即可 tagCls...Kenrl_Pool_OffSet(DeskTop Heap) = TagWnd.head.pSelf - TagWnd 可以算出 用户态映射的桌面堆 内核态桌面堆的偏移 TagWnd.pcls 为当前窗口的地址...为 分配的窗口菜单名称,分配在Session Pool里 获取到 TagCls.lpszMenuName 的地址后,释放窗口,以及窗口,创建PALETTE即可复用 以下为Poc中部分代码 HINSTANCE

1.2K10

MFC中句柄、指针、ID之间的关联

每一个句柄就相应windows窗体,而vc对HANDLE进行封装,间接操作的都是HANDLE,如今句柄仅仅是的一个成员变量。...pWnd->Attach(hWnd); //Attaches a Windows window to a CWnd object 指针到句柄 HWND hWnd=pWnd->GetSafeHandle...句柄,指针三者相互转换函数 ID--HANDLE--HWND三者之间的互相转换 id->句柄-----------hWnd = ::GetDlgItem(hParentWnd,id); id->指针...m_pGDIObj->GetSafeHanle(); 本文来自CSDN博客:http://blog.csdn.net/lovegod12/archive/2009/04/19/4092249.aspx 常用的窗口控件窗口的句柄或者指针的获取...IDC_TREE IDC_COMBO1 获取当前最上层窗体的句柄: HWND mainHwnd = ::GetForegroundWindow();//获取当前topmost的窗体句柄 获取当前窗体的焦点句柄

1.6K40

c++获取窗口句柄的方法「建议收藏」

FindWindow(); 函数原型:HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName); FindWindow这个函数检索处理顶级窗口窗口名称匹配指定的字符串...这个函数不搜索子窗口。 lpClassName参数指向名,lpWindowName指向窗口名,如果有指定的窗口的名字则表示成功返回一个窗口的句柄。否则返回NULL。...GetParent(); 函数功能:该函数返回一个指定子窗口的父窗口句柄 函数原型:HWND GetParent(HWND hWnd); //获取对话框父窗口的句柄 //hWnd =GetParent...(hDlg); //获取窗口句柄 /* HWND WINAPI FindWindow( _In_opt_ LPCTSTR lpClassName, //窗口名 _In_opt_ LPCTSTR...lpWindowName //窗口的标题名 ); */ hWnd = FindWindow(szWindowClass, NULL); //重新绘制客户区 InvalidateRect(hWnd

1.3K30

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

1.设计窗口 2.注册窗口 3.创建窗口 4.显示窗口 5.更新窗口 6.建立消息循环 7.窗口过程函数 总共需要这几步,每不单独做个讲解. 1.设计窗口 设计窗口,顾名思义,就是你要给你的窗口设置一些属性...casemap:none .const ;常量区 g_szClassName db "ClassName",0       ;窗口名称...;开始给WNDCLASS各种属性赋值 mov @wc.style, CS_VREDRAW or CS_HREDRAW;   ;默认,垂直水平拉伸窗口,窗口内容重新布局绘制 mov @wc.lpfnWndProc...mov @wc.lpszClassName,offset g_szClassName;;设置窗口名称                           ;这里就设计完成了,下一步就要注册这个窗口...编译出来之后是.RES的文件,我们把它当做obj文件使用,连接到PE文件中(exe文件中)即可 但是我们在设计窗口的时候,需要使用一下这个菜单资源的ID 菜单资源的ID,在资源对应的Result.h的头文件中

1.3K80
领券