參考資料:
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;
}
}