X11 - Window Property auslesen

Post Reply
Message
Author
zimex

X11 - Window Property auslesen

#1 Post by zimex »

Hallo zusammen.

Ich versuche seit Tagen verzweifelt eine Window property von einem Fenster zu ermitteln.
Dafür benutze ich die die Xlib und folgenden Code.

Ich möchte also prüfen ob der _NET_WM_WINDOW_TYPE gleich DESKTOP ist.

Code: Select all

  Atom     actual_type;
   Atom     desk_atom,type;
   int      actual_format;
   long     nitems;
   long     bytes;
   unsigned char*     data;
   type = XInternAtom(dpy,"_NET_WM_WINDOW_TYPE",True); //freen und vorher initialisieren
   desk_atom = XInternAtom(dpy,"_NET_WM_WINDOW_TYPE_DESKTOP",True);
   XGetWindowProperty(dpy,propwin,type,0,0,False,
			       AnyPropertyType,
                   &actual_type,
                   &actual_format,
                   &nitems,
                   &bytes,
                   &data);
                   write2log(actual_format);
                   write2log(XGetAtomName(dpy,data));
                   write2log(nitems);
                  
Dazu muss ich sagen, dass die Funktion "write2log" mir nur die Ergebnise in eine Datei schreibt, damit ich sehe ob ich den Wert ermitteln konnte.

Hoffe es kann mir jemand helfen, da ich im Internet keine große Hilfe finde und mich in letzter Zeit mit dem Quellcode von dem Programm "xprop" rummgeschlagen habe.
http://xprop.sourcearchive.com/document ... ource.html

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

XFlush() vergessen? X-Requests werden immer erst dann übertragen, wenn man die Request-Queue flusht. Nur geschieht das bei anderen Aufrufen, z.B. XSync() oder XNextEvent() automatisch, deshalb wird es gerne vergessen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

zimex

#3 Post by zimex »

Ne das ist es nicht. XFlush ist nicht erforderlich, bekomme ja auch output.

Zumindest kann ich den TYP des Rückgabewertes erfolgreich ausgeben (ATOM) nur bei den Daten des Atoms bekommme ich NULL zurückgegeben, was auch völlig korrekt bei den Fenstern funktioniert, welche diese Property nicht benutzen. (So wie in der Dokumentation beschrieben).

Fenster welche diese Property besitzen geben mir durch meinen Code jedoch nur nicht zusammenhängende Buchstabenkombinationen zurück.

mhh...

je-so

#4 Post by je-so »

Fehler liegt in letztem 0 der Paramterliste (dpy,propwin,type,0, 0, ...).

man XGetWindowProperty

XGetWindowProperty(Display *display, Window w, Atom property,
long long_offset, long long_length, Bool delete, Atom req_type,
Atom *actual_type_return, int *actual_format_return, unsigned long *nitems_return,
unsigned long *bytes_after_return, unsigned char **prop_return);

long_length: Specifies the length in 32-bit multiples of the data to be retrieved

Setze Parameter auf z.B. 100, dann sollte es gehen (nicht getestet).

Post Reply