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

时间:2010-12-31 02:52:12

标签: c++ winapi

我使用以下enumchild proc获取每个窗口的hwnd,问题是我无法以某种方式检测每个hwnd的任何信息,所以我可以做我想要的那些被检测为我需要的那些。

例如,我怎样才能获得窗口类名称和enum bellow中每个窗口的标题?

我尝试了类似的事情。

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

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 func不应该每次都将cName更改为新句柄吗?

此外,GetClassName函数返回写入cName的字符数,我真的不知道这对我有用吗?我需要以一些可读的格式获取我的cName,这样我就能做到像

这样的事情

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

但我得到的只是十六进制混乱。

1 个答案:

答案 0 :(得分:4)

不是Unicode构建吗?

再次检查以下内容:

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