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

Mar*_*o29 2 c++ winapi

我正在使用以下enumchild proc来获取每个窗口的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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

但是我到这里来的是十六进制混乱。

9da*_*dan 5

它不是Unicode版本吗?

再次检查以下内容:

TCHAR className[MAX_PATH];
GetClassName(hwnd, className, _countof(cName));
_tprintf(cName);
Run Code Online (Sandbox Code Playgroud)