在 C 中,如何使用 X11 获取屏幕内活动监视器的几何形状(x、y、宽度、高度)
In C, how to get the geometry (x, y, width, height) of the active monitor within the screen using X11
我所有的搜索都会找到关于如何使用 C 在 X11 中获取活动屏幕的几何形状的答案,但是该屏幕可能包含许多显示器,并且通常只有一个屏幕,除非有许多用户同时使用同一个屏幕计算机。
那些关于获取屏幕几何形状的答案已经过时,因为它们没有考虑到多台显示器。
那么,我怎样才能获得带有鼠标指针或处于活动状态 window 的显示器的几何形状(x、y、宽度、高度)?我想要相对于屏幕的几何形状。
您需要使用 RandR 扩展 API。获取 xrandr
实用程序的源代码并从那里窃取你需要的东西。您需要 XRRGetMonitors
函数和相关数据结构。您还可以使用 xrandr
在命令行上获取您需要的信息。
我不知道有没有活动监视器,因为一个活动window可以跨越几个监视器,一个指针可以在另一个监视器中。无论如何,XRRMonitorInfo
结构包含有关显示器几何形状的所有信息,包括其大小(以像素和毫米为单位)及其在逻辑屏幕上的位置,因此您可以从一对屏幕坐标中提取显示器描述。
另见 。
我所有的搜索都会找到关于如何使用 C 在 X11 中获取活动屏幕的几何形状的答案,但是该屏幕可能包含许多显示器,并且通常只有一个屏幕,除非有许多用户同时使用同一个屏幕计算机。
那些关于获取屏幕几何形状的答案已经过时,因为它们没有考虑到多台显示器。
那么,我怎样才能获得带有鼠标指针或处于活动状态 window 的显示器的几何形状(x、y、宽度、高度)?我想要相对于屏幕的几何形状。
您需要使用 RandR 扩展 API。获取 xrandr
实用程序的源代码并从那里窃取你需要的东西。您需要 XRRGetMonitors
函数和相关数据结构。您还可以使用 xrandr
在命令行上获取您需要的信息。
我不知道有没有活动监视器,因为一个活动window可以跨越几个监视器,一个指针可以在另一个监视器中。无论如何,XRRMonitorInfo
结构包含有关显示器几何形状的所有信息,包括其大小(以像素和毫米为单位)及其在逻辑屏幕上的位置,因此您可以从一对屏幕坐标中提取显示器描述。
另见