c++ - 如何从 HWND 句柄获取可读的类名和标题?在 WinApi C++ 中

标签 c++ winapi

我正在使用以下 enumchild 过程来获取每个窗口的 hwnd,问题是我无法以某种方式检测来自每个 hwnd 的任何信息,因此我可以使用检测到的我需要的信息来执行我想要的操作。

例如,我如何获取下面枚举中的窗口类名称和每个窗口的标题?

我尝试过类似的东西..

已编辑:复制粘贴(如果有帮助)

TCHAR cName[MAX_PATH];

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) {


 TCHAR cName[MAX_PATH];
 GetClassName(hwnd, cName, _countof(cName));
  cout << cName << endl;

     return TRUE; 
}

int _tmain(int argc, _TCHAR* argv[])
{


    HWND hwnd = FindWindow(0, TEXT("reference"));
    EnumChildWindows(hwnd, EnumChildProc, 0);

    system("PAUSE");
 return 0;
}

它只是返回十六进制句柄信息,并且每次都相同,GetClassName 函数不应该每次都将 cName 更改为新句柄吗?

GetClassName 函数还返回写入 cName 的字符数,我真的不明白这对我有什么用处?我需要以某种可读的格式获取我的 cName,这样我就可以执行类似的操作

if(className == TEXT("classnameiamlookingfor"&& hwndtitle = TEXT("thetitlethatinterestsme") DOSOMETHINGWITHIT();

但我在这里得到的只是十六进制的困惑。

最佳答案

这不是 Unicode 构建吗?

再次检查以下内容:

TCHAR className[MAX_PATH];
GetClassName(hwnd, className, _countof(cName));
_tprintf(cName);

关于c++ - 如何从 HWND 句柄获取可读的类名和标题?在 WinApi C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567767/

相关文章:

c++ - 如何在循环中获取数组的大小

c++ - 您将如何检查特定文件名是否存在于 Google Cloud Storage 中?

c++ - 以下代码是否可能存在内存泄漏?

c++ - 是否可以通过 lambda 将变量模板传递给函数?

c# - 将文件夹内部移动的最佳方法是什么?

c++ - 带有 RRF_RT_REG_SZ 的 RegSetValueEx 在注册表中生成 REG_EXPAND_SZ?

c++ - 链表复制构造函数的正确实现

winapi - 如何获取列表控件中的列数

c++ - Hook ExtTextOut 返回意外结果

c++ - native C++ 中的渐变画笔?