Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
X11 - Window Property auslesen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
zimex
Gast





BeitragVerfasst am: 05. Feb 2011 20:18   Titel: X11 - Window Property auslesen

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:

  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/documentation/1:1.0.2-0ubuntu1/xprop_8c-source.html
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 06. Feb 2011 15:41   Titel:

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

zimex
Gast





BeitragVerfasst am: 08. Feb 2011 21:36   Titel:

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
Gast





BeitragVerfasst am: 22. Mai 2011 8:57   Titel:

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

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy