Avatar billede mk_ Nybegynder
14. juni 2009 - 19:17

X11 - retunere det aktive vindue?

Goddag,

Jeg forsøger at lave et lille projekt, hvor jeg vil have X11's aktive vindue, samt dets navn og måske bredde og højde.

Jeg har fået lavet dette:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/Xos.h>
#include <X11/keysym.h>
#include <X11/Xresource.h>
#include <X11/cursorfont.h>

#include <giblib/giblib.h>
#include <stdio.h>

int d()
{
    Display *disp;
    Window focus;
    int revert;
    XWindowAttributes attr;

    char *windowName = NULL;

    disp = XOpenDisplay(NULL);
    XGetInputFocus(disp, &focus, &revert);
    XGetWindowAttributes(disp, focus, &attr);
    XFetchName(disp, focus, &windowName);
    printf("Window name: %s\nWidth: %d\n", windowName, attr.height);
}

Og det virker helt fint, ingen problemer eller noget som helst - med den betingelse at det er projektets eget vindue..

Resulterende output (xterm med projektet kørende der var aktivt):
---8<---
Window name: oculus
Width: 316
---8<---

Men lige så snart jeg får et andet vindue i fokus, bliver resultatet:
---8<---
Window name: (null)
Width: 1
---8<---

Er det den forkerte metode jeg kalder, eller noget andet? Jeg håber du har løsningen.

Sincerely,
Mikkel Kroman.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester