参考资料:
https://www.x.org/releases/current/doc/libX11/libX11/libX11.html
在X11时代窗口的标题属性通过WM_NAME属性存储,到了XCB时间窗口属性通过_NET_WM_NAME存储
X11中提供了 XGetTextProperty,XGetWMName,XFetchName等函数获取窗口的标题
若在X11中获取XCB创建的窗口标题,可使用以下代码
bool get_window_name2(Display* dpy , Window window , char* buf)
{
//尝试使用_NET_WM_NAME方式获取窗口的名称
XTextProperty tp;
Status s1 = XGetTextProperty(dpy,window,&tp,XInternAtom(dpy, "_NET_WM_NAME", False));
if (tp.nitems > 0)
{
int count = 0, i, ret;
char **list = NULL;
ret = XmbTextPropertyToTextList(dpy, &tp, &list, &count);
if((ret == Success || ret > 0) && list != NULL){
for(i=0; i<count; i++)
sprintf(buf,"%s", list[i]);
XFreeStringList(list);
} else {
sprintf(buf,"%s", tp.value);
}
return true;
}
else
{
return false;
}
}