如何以编程方式获得Linux的窗口和系统的parsing?

我正在尝试在Linux系统上获得屏幕的分辨率以及特定窗口(程序正在运行)的分辨率。 我不需要修改分辨率,我只需要当前值。 据我所知,我们可以在Windows上调用一些系统函数,我们怎么能在Linux上这样做,最好使用C / C ++语言? 提前致谢。

更新:其实,我不需要做一个GUI,虽然我知道Qt和GTK +可以做到这一点,我不愿意包括一个外部库只是为了得到的决议。

Solutions Collecting From Web of "如何以编程方式获得Linux的窗口和系统的parsing?"

在X11中,您需要调用Xlib的XGetWindowAttributes来获取各种窗口信息,包括相对于父项的大小和位置。 有关如何使用它的例子,你可以谷歌'xwininfo.c'。

也就是说,你可能会使用一些更高层次的框架来进行窗口编程 – 而且有很高的可能性,因为它已经有了一些其他的原始代码,看到一个Qt的例子 – 所以你可能想要给出更多的背景关于这个问题。

要获得屏幕分辨率,您可以使用XRandR扩展,就像在xrandr源代码中一样:

SizeID current_size; XRRScreenSize *sizes; dpy = XOpenDisplay (display_name); // ... root = RootWindow (dpy, screen); sc = XRRGetScreenInfo (dpy, root); current_size = XRRConfigCurrentConfiguration (sc, &current_rotation); sizes = XRRConfigSizes(sc, &nsize); for (i = 0; i < nsize; i++) { printf ("%c%-2d %5d x %-5d (%4dmm x%4dmm )", i == current_size ? '*' : ' ', i, sizes[i].width, sizes[i].height, sizes[i].mwidth, sizes[i].mheight); // ... } 

您可以在xterm中看到输出“xrandr”。

或者,最好使用xdpyinfo方法:

 Display *dpy; // dpy = ... int scr = /* ... */ printf (" dimensions: %dx%d pixels (%dx%d millimeters)\n", DisplayWidth (dpy, scr), DisplayHeight (dpy, scr), DisplayWidthMM(dpy, scr), DisplayHeightMM (dpy, scr)); 

依靠:

命令行工具xdpyinfo为您提供了这些信息; 要做到这一点,你需要使用Xlib,正如Andrew Y解释的那样。