首页 > 系统相关 >c++,x11,linux查找窗口

c++,x11,linux查找窗口

时间:2023-04-26 10:37:45浏览次数:34  
标签:linux window c++ Window result windowName x11 root display

如题

点击查看代码
#include <X11/Xlib.h>
#include <stdio.h>
void findWindow(Display* display, Window window, char** windowName, Window* result)
{
    Window root, parent, *children;
    unsigned int nChildren;

    if(XFetchName(display, window, windowName) > 0)
    {
        if (windowName && strstr(*windowName, "Pluma") != NULL)
        {
            *result = window;
            return;
        }
    }

    if(XQueryTree(display, window, &root, &parent, &children, &nChildren) != 0)
    {
        int i;
        for(i = 0; i < nChildren; i++)
        {
            findWindow(display, children[i], windowName, result);
        }
        XFree(children);
    }
}

void MainWindow::onfindwnd()
{
    Display* display = XOpenDisplay(NULL);
    Window root = DefaultRootWindow(display);

    Window result = None;
    char** windowName = new (char*);
    findWindow(display, root, windowName, &result);

    printf("Found window with ID %lu\n", result);

    XCloseDisplay(display);
    delete windowName;
}

int main()
{
    Display* display = XOpenDisplay(NULL);
    Window root = DefaultRootWindow(display);

    Window result = None;
    char** windowName = new (char*);
    findWindow(display, root, windowName, &result);

    printf("Found window with ID %lu\n", result);

    XCloseDisplay(display);
    delete windowName;
    return 0;
}

标签:linux,window,c++,Window,result,windowName,x11,root,display
From: https://www.cnblogs.com/zhongjiaxiang/p/17354902.html

相关文章

  • C++ 类和对象1
    1.初步认识面向对象与面向过程C语言是面向过程的语言,关注的是解决问题的过程比如,首先对问题进行拆解,然后用函数的方式对每个部分逐个实现,最后通过函数之间的相互调用将问题解决C++是面向对象的,关注的是对象,如何从一个问题中抽离出不同的对象,然后靠对象之间的交互解决......
  • 02 | C++lambda容易忽略的点
    1.模板化的lambda如果我们的lambda接收容器(假定我们老老实实的传入容器),并且要提取出容器中的元素类型,应该怎么做呢?之前我们可能这样做autof=[](autovector){usingT=typenamedecltype(vector)::value_type;///......}首先说这样做并不明显我们要传入的......
  • C++学习 第十二天
    今日学习内容:继承 多态 虚函数和抽象函数 继承:优点:可以实现代码复用,节省代码量分类:单继承 多继承 单继承:语法:class 子类类名:继承访问修饰符 父类类名{成员};父类:子类: 继承:继承修饰符:publicprotectedprivate当继承修饰是 public时 访问权......
  • C++ 学习 第十一天
    今日学习内容:面向对象 面向对象:优势:可以实现数据类型扩展易于理解 呈现形式:类 特性:封装:先将成员绑定为一个整体,再将被绑定成员划分权限,所以在类中,成员和成员直接不遵从代码顺序结构权限:public 公有的:类内可以访问 子类可以访问 类外可以访问privat......
  • 左值、左值表达式、左值引用 C++
     本文topics什么是左值和右值什么是左值表达式、右值表达式引用的分类之前学习Java的时候只记得在赋值表达式左边的就是左值,右边的就是右值。这个说法没有错,但今天又在C++中有学习到了关于左右值得概念,在此梳理了一些这些知识点。左值和右值左值:左值是一个对象或变量,可以代表......
  • 40 个简单又有效的 Linux Shell 脚本示例 转载
    1.HelloWorld程序员经常通过学习helloworld程序来学习新语言。这是一个简单的程序,将字符串“HelloWorld”打印到标准输出中。然后,使用vim或nano等编辑器创建hello-world.sh文件,并将以下行复制到其中。#!/bin/bashecho "Hello World"保存并退出文件。接下来,您需要......
  • C++数据结构(树)
    树是一种递归定义的数据结构,如果树中节点的各子树从左到右是有次序的,不能互换,则称该树为有序树,否则叫无序树。关于树的节点:节点拥有的子树的个数叫做节点的度如果度为0,那么该节点叫做叶节点或终端节点,除了根节点外的分支节点称为内部节点树的度是各节点度的最大值。节点的子......
  • C++ 多线程并发
    C++参考手册-并发支持库《C++ConcurrencyinAction》https://segmentfault.com/a/1190000040628584?utm_source=sf-similar-articlehttps://zhuanlan.zhihu.com/p/547312117bilibiliC++多线程并发基础入门教程1创建线程C++11之前原生不支持多线程,C++11起逐步引......
  • linux设备树-中断控制器驱动
    我们在linux驱动移植-中断子系统执行流程 介绍了中断的执行流程,以及在没有使用设备树的情景下,中断控制器的注册流程,其主要流程:将S3C2440中断资源抽象为一个主中断控制器、两个子中断控制器,一个用于管理外部中断源、另一个管理带有子中断的内部中断源;采用基于数组方式分配中断......
  • linux 文件查找
    1,文件夹全局查找grep"JAVA_OPTS=\"-Xms1024m"-rl/data/tomcats/2,文件内容替换:%s/www.6188cp.com/zfc_web_2/g  3,查看系统限制ulimit-a关注:其中"openfiles(-n)1024"是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接......