X11 - Window Property auslesen

Antworten
Nachricht
Autor
zimex

X11 - Window Property auslesen

#1 Beitrag von zimex » 05. Feb 2011 20:18

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: Alles auswählen

  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

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 06. Feb 2011 15:41

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 Beitrag von zimex » 08. Feb 2011 21:36

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 Beitrag von je-so » 22. Mai 2011 8:57

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).

Antworten