簡體   English   中英

C,Xlib,無法獲取焦點的名稱 window

[英]C , Xlib, can't get the name of focussed window

這是我正在使用的代碼,

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

      Display *dpy;
      char *window_name_return = NULL;
      Window focused;
      int revert_to;

void main(){
    
    dpy = XOpenDisplay(NULL) ;
    if(!dpy) printf("error\n");
        
    XGetInputFocus(dpy, &focused, &revert_to);
    XFetchName(dpy, focused, &window_name_return);
    XFree(window_name_return);
    printf("Focus on %s\n", window_name_return);
    XCloseDisplay(dpy);
}

這僅適用於終端仿真器 windows,對於其他 window,程序返回 null。 XFetchName的文檔說,

如果尚未為此 window 設置 WM_NAME 屬性,則 XFetchName() 將 window_name_return 設置為 NULL

這就是它不起作用的原因嗎? 我使用 dwm window 管理器,在 Openbox 中運行代碼也不起作用。

如何更改代碼以使其適用於所有類型的 window?

您的代碼中有多個問題:

  • 首先是您沒有檢查XFetchName返回的狀態;
  • 您不檢查window_name_return是否為 null 的第二個;
  • 第三個也是最糟糕的問題是在打印之前釋放了字符串(使指針無效)。

暫無
暫無

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

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