首页
学习
活动
专区
工具
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的方法。

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

相关·内容

Windows窗口类

Windows编程中,对所有的GUI组件和控件进行了分类,每种类型的实例对象都具有不同的特性,这些特性包括UI外观以及事件的处理和响应的方法。就和面向对象技术中的类和实例对象一样,Windows中也提供了窗口类和窗口实例的概念,在创建一个窗口对象是必须要指定对应的窗口类名称,所有的窗口类必须要先注册到系统中才能进行实例化创建。系统内部默认注册了一些窗口类,比如按钮,编辑框这些窗口类等等。本文所要介绍的就是那些针对窗口类进行操作的API。一个窗口类其实就是定义了这种窗口实例的外观显示的样式、光标在窗口上移动时的样式、以及图标样式、背景绘制的画刷的类型、菜单、以及对应的UI事件处理函数等等。为了唯一的表征一个窗口类,还需要为窗口类指定一个唯一的字符串名称。下面的结构体就是用来描述一个窗口类所应该具有的数据结构:

02
领券