gpt4 book ai didi

使用 Xlib 关闭应用程序窗口

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:17 26 4
gpt4 key购买 nike

我正在尝试使用来自其 ID 的 Xlib 关闭应用程序的窗口。用过wmctrl的源代码作为指南,下面是一个我认为应该实现此目的的最小 C 程序,窗口的 ID 被指定为 argv[1]

#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>

int main (int argc, char *argv[]) {
Display *disp;
unsigned long wid;
XEvent event;

disp = XOpenDisplay(NULL);
sscanf(argv[1], "0x%lx", &wid);

long mask = SubstructureRedirectMask | SubstructureNotifyMask;

event.xclient.type = ClientMessage;
event.xclient.serial = 0;
event.xclient.send_event = True;
event.xclient.message_type = XInternAtom(disp, "_NET_CLOSE_WINDOW", False);
event.xclient.window = (Window)wid;
event.xclient.format = 32;
event.xclient.data.l[0] = 0;
event.xclient.data.l[1] = 0;
event.xclient.data.l[2] = 0;
event.xclient.data.l[3] = 0;
event.xclient.data.l[4] = 0;

XSendEvent(disp, DefaultRootWindow(disp), False, mask, &event);
}

我不确定我不理解/缺少什么来实现这一目标。

最佳答案

添加这个:

XSync(disp, False);

main 的末尾。如前所述,您的程序在有机会实际向服务器发送请求之前就退出了,因为 XLib 会缓冲请求。

关于使用 Xlib 关闭应用程序窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com