Xlib 查找窗口

  1 /*
  2     xraise 0.2 - A small tool to send a X application
  3                      to the foreground
  4     Copyright 2010 - socol
  5     Copyright 2007 - Hd Luc
  6 */
  7 /**
  8  * gcc -g -o xraise xraise.c `pkg-config gtk+-2.0 --cflags --libs gthread-2.0 x11`
  9  */
 10
 11
 12
 13 #include <X11/Xos.h>
 14 #include <X11/Xlib.h>
 15 #include <X11/Xutil.h>
 16 #include <stdio.h>
 17 #include <unistd.h>
 18 #include <stdlib.h>
 19
 20 /* "borrowed" from xwininfo/dsimple.c */
 21
 22 Window Window_With_Name(dpy, top, name)
 23      Display *dpy;
 24      Window top;
 25      char *name;
 26 {
 27     Window *children, dummy;
 28     unsigned int nchildren;
 29     int i;
 30     Window w=0;
 31     char *window_name;
 32         XClassHint *class_hint;
 33     class_hint = XAllocClassHint();
 34     int ret = 0;
 35 #if 0
 36     // find by WM_NAME(STRING) = "window - tilte"
 37     if (XFetchName(dpy, top, &window_name) && (strstr(window_name, name) == window_name))
 38       return(top);
 39 #else
 40     // find by WM_CLASS(STRING) = "mywindow", "MyWindow"
 41     if (XGetClassHint(dpy, top, class_hint)) {
 42         if (strstr(class_hint->res_name, name) == class_hint->res_name) {
 43             ret = 1;
 44         }
 45         if (!class_hint->res_class) {
 46             XFree(class_hint->res_class);
 47             XFree(class_hint->res_name);
 48         }
 49         if (ret)
 50             return(top);
 51     }
 52 #endif
 53
 54     if (!XQueryTree(dpy, top, &dummy, &dummy, &children, &nchildren))
 55       return(0);
 56
 57     for (i=0; i<nchildren; i++)
 58            {
 59         w = Window_With_Name(dpy, children[i], name);
 60         if (w)
 61           break;
 62     }
 63     if (children) XFree ((char *)children);
 64       return(w);
 65 }
 66
 67 int main(int argc, char **argv)
 68 {
 69     Window window;
 70     Display *dpy;
 71
 72     if (argc < 2)
 73     {
 74         fprintf(stderr, "Usage: %s window-name\n", argv[0]);
 75         exit(1);
 76     }
 77
 78     dpy = XOpenDisplay(":0");
 79     if (!dpy)
 80     {
 81         fprintf(stderr, "Cannot open display.\n");
 82         exit(1);
 83     }
 84
 85     window = Window_With_Name(dpy, DefaultRootWindow(dpy), argv[1]);
 86     if (!window)
 87     {
 88         fprintf(stderr, "Cannot find a window by that name.\n");
 89         exit(1);
 90     }
 91
 92     XSetInputFocus(dpy, window, RevertToPointerRoot, CurrentTime);
 93
 94     if(!XRaiseWindow(dpy, window))
 95     {
 96         fprintf(stderr, "XRaiseWindow error?\n");
 97         exit(1);
 98     }
 99     XCloseDisplay(dpy);
100     return 0;
101 }

转载fromhttp://socol.iteye.com/blog/788653

时间: 2024-10-23 23:49:39

Xlib 查找窗口的相关文章

WinAPI: FindWindow、FindWindowEx - 查找窗口

FindWindow(   lpClassName,        {窗口的类名}   lpWindowName: PChar {窗口的标题} ): HWND;              {返回窗口的句柄; 失败返回 0} //FindWindowEx 比 FindWindow 多出两个句柄参数: FindWindowEx(   Parent: HWND;    {要查找子窗口的父窗口句柄}   Child: HWND;      {子窗口句柄}   ClassName: PChar; {}  

FindWindow 查找窗口

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, _ ByVal lParam As Long) As Long Declare Function FindWindow Lib "user32" Alias _ "FindWin

MFC 记录- 遍历窗口

加深记忆------ 经常用到这些,做个记录! 这里列出两种遍历方式... 用到的函数原型: 1 HWND GetWindow( 2 HWND hWnd, // handle to original window 3 UINT uCmd // relationship flag 4 ); 5 6 HWND GetDeskTopWindow(VOID) 7 8 int GetWindowText( 9 HWND hWnd, // handle to window or control with t

窗口的子类化与超类化

1. 子类化 改变一个已经存在的窗口实例的性质:消息处理与其他实例属性.在SDK编程范畴内,子类化就是改变一个窗口实例的窗口函数(通过GetWindowLong()和SetWindowLong()),子类化所要做的就是为某窗口实例编写新的窗口函数.其操作是在实例级别上进行的.在MFC中子类化的情况有所不同:所有MFC窗口有相同的窗口函数,由该窗口函数根据窗口句柄查找窗口实例,在把消息映射到该窗口类(class)得消息处理函数上.为了利用MFC的消息映射机制,不宜改变窗口函数(名),MFC也把子类

利用窗口引用漏洞和XSS漏洞实现浏览器劫持

==Ph4nt0m Security Team==                        Issue 0x03, Phile #0x05 of 0x07 |=---------------------------------------------------------------------------=||=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=||=---------------------------

Windows API 设置窗口下控件Enable属性

参考页面: http://www.yuanjiaocheng.net/entity/update-entity-graph.html http://www.yuanjiaocheng.net/ASPNET-CORE/first.html http://www.yuanjiaocheng.net/ASPNET-CORE/asp-net-core-overview.html http://www.yuanjiaocheng.net/ASPNET-CORE/asp.net-core-environme

Window 窗口类

窗口类 WNDCLASS 总结 总结为下面的几个问题: 1. 什么是窗口类 2. 窗口类的三种类型 3. 窗口类各字段含义 4. 窗口类的注册和注销 5. 如何使用窗口类,子类化.超类化是什么 下面分别描述: 1. 什么是窗口类? 窗口类定义了一系列属性,系统使用这些属性作为模板来创建出一个或多个 window (窗口). 每个窗口类都关联了一个窗口过程函数(window procedure), 由窗口类创建出的所有窗口(window), 都共享同一个窗口过程函数. 在进程中创建窗口之前必须先注

【Eclipse】根据文件名查找文件与根据文件中的字符串查找文件

在大型项目开发中,你经常需要在Eclipse左方那庞大的文件树中寻找你需要的文件. 此时,你直接使用Ctrl+Shift+R就可以唤出文件查找窗口.这是根据文件名来找文件,如下图,只要输入你需要寻找的文件名,就能得到相应的寻找结果. 如果你需要根据文件中的字符串查找文件,那么,你可以通过Ctrl+H唤出查找与替换的窗口,切换到File Search选项卡中.输入你要搜索的字符串,与此字符串可能存在的文件后缀名,如果不记得输入*.*,输入文件后缀的原因是为了减少Eclipse的搜索量,加快搜索速度

窗口类(Window Class)概述

windows窗口编程(通常意义上的win32)有几个比较核心的概念:入口函数WinMain.窗口类Window Class.窗口过程.消息处理机制.通用控件.本文主要介绍窗口类的相关概念,包括: 窗口类的类型: 窗口类的注册及使用: 窗口类的构成. 窗口类是基于进程的,每个应用程序在创建窗口之前必须注册窗口类(或者使用操作系统定义的窗口类),使用完成之后需要销毁(反注册). 介绍窗口类的主要目的在于明确windows窗口编程的相关概念,掌握windows内部对于GUI处理的机制.如果你在用mf