Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用libxdo或其他x库按窗口的wm名称(_NET_wm_name)显示/隐藏窗口?_C_Window_X11_Xlib_Xdotool - Fatal编程技术网

C 如何使用libxdo或其他x库按窗口的wm名称(_NET_wm_name)显示/隐藏窗口?

C 如何使用libxdo或其他x库按窗口的wm名称(_NET_wm_name)显示/隐藏窗口?,c,window,x11,xlib,xdotool,C,Window,X11,Xlib,Xdotool,使用命令行工具,您可以使用-a开关通过窗口的wm名称将窗口作为目标。例如: xdo hide -a Foo 而在C的xdo库libxdo中,您只能通过窗口ID来确定窗口的目标。如何仅知道wm名称(\u NET\u wm\u name)来获取窗口ID 差不多 Window my_window = xdo_get_window_by_wm_name(xdo, "Foo") 这就是我要找的,有什么能做到这一点的吗 最终,我试图通过它们的\u NET\u WM\u NAME来显示/隐藏窗口,是否有其

使用命令行工具,您可以使用
-a
开关通过窗口的wm名称将窗口作为目标。例如:

xdo hide -a Foo
而在C的xdo库libxdo中,您只能通过窗口ID来确定窗口的目标。如何仅知道wm名称(
\u NET\u wm\u name
)来获取窗口ID

差不多

Window my_window = xdo_get_window_by_wm_name(xdo, "Foo")
这就是我要找的,有什么能做到这一点的吗


最终,我试图通过它们的
\u NET\u WM\u NAME
来显示/隐藏窗口,是否有其他更好的方法在C中实现这一点(使用libxdo或其他方式)?

我不知道
libxdo
库是如何工作的,但是使用标准的
libX11
库,您可以使用
XQueryTree
从根目录递归枚举所有窗口,并使用
XGetWindowProperty
获取它们的任何属性。libxcb中也存在类似的函数(它是libX11的较新替代品,但总和与旧libX11一样糟糕)。看看
xdo
源代码,它就是这么做的,使用
libxcb
,重要的区别是
-a
\u NET\u WM\u NAME
上不匹配,但是在旧的非utf8 icccm
WM_NAME
属性上。