簡體   English   中英

使用Xlib關閉應用程序窗口

[英]Closing application window with Xlib

我正在嘗試使用Xlib從其ID關閉應用程序的窗口。 在使用wmctrl的源代碼作為指南之后,下面是一個我認為應該實現的最小C程序,並將Window的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緩沖了請求,因此程序在有機會將請求實際發送到服務器之前退出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM