用libx11截取屏幕截图

时间:2012-04-23 16:56:15

标签: c screenshot x11

我目前正在尝试使用libx11

截取屏幕截图
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>

int main(void) {
XImage* pic;
Display* dpl;
unsigned int buffer_size;

dpl = XOpenDisplay("127.0.0.1:0.0");

pic = XGetImage(dpl, RootWindow(dpl, DefaultScreen(dpl)), 10, 10, 201, 201,
        AllPlanes, ZPixmap);
}

如果我使用-lX11编译代码并运行它,我会不断收到分段错误。 有什么想法吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

X11服务器通常不会侦听TCP / IP localhost,而是侦听Unix套接字。无论如何,你不应该硬编码X11服务器的地址。试试这个:

dpl = XOpenDisplay(NULL);
assert(dpl);

答案 1 :(得分:1)

您应该检查dpl是否为NULL。

我有根据的猜测是,ip无法正常工作。大多数发行版 NOT 允许通过tcp套接字访问xserver,所以我猜你必须启用它们(它们被nolisten禁用)。