XLib: Programm starten, Fensterhandle erhalten



  • Hallo,

    gibt es eine Möglichkeit, im eigenen Programm ein Programm zu starten (z.B. aterm) und daraufhin den Fenstehandle vom Typ Window der geöffneten Instanz zu erhalten. Bin Dankbar für jeden Vorschlag.

    Gruß
    moejoe



  • Eigentlich sollte das ja kein Problem sein, der WindowManager erhält ja auch das FensterHandle. Vielleicht solltest du da mal ansetzen.



  • schau dir mal man: xwininfo an.



  • Hallo,

    Danke! Der Tipp xwininfo anzuschauen hat Licht in das Dunkel gebracht. Den Code eines Window-Managers anzuschauen, ist auch eine gute. Aber bei meinem Lieblings WM Fluxbox ist das nicht gerade wenig Quelltext. Das ganze ist da auch schön in Klassen verpackt, so dass man schon etwas Zeit investieren muss, um das gesuchte zu finden.

    Es ist also so, dass ich gerade den Quelltext eines Programms analysiere, um das Programm etwas an meine Bedürfnisse anzupassen. Da sind Funktionen enthalten, um ein Fensterhandle zu erhalten. Einmal durch den Fenstertitel und einmal mit einem Klick mit der Maus auf das Fenster. Prinzipiell könnte ich auch schon mit der Funktion arbeiten, die Fensterhandle anhand des Titels ermittelt. Aber die beiden genannten Funktionen, zum Ermitteln des Fensterhandles, haben mir unterschiedliche Handles geliefert, sodass ich annahm, dass die Funktion, die das Handle per Titel ermittelt, fehlerhaft ist. Zudem wurde sie in dem Programm auch nicht genutzt, sondern nur die Funktion, die per Mausklick das Handle ermittelt.

    Nach deinem Tipp, habe ich xwininfo -all benutzt. Da habe ich dann die Ausgabe mit meinen ermittelten Werten verglichen und gesehen, dass die Funktion die das Handle per Titel ermittelt das eigentliche Handle ermittelt, und die Funktion mit dem Mauszeiger ermittelt einen ParentWindow des betreffenden Fensters. Es scheint wohl so zu sein, dass der WM ein leeres Fenster erstellt und darin das Fenster der gestarteten Applikationen reinzeichnet. Deswegen gibt es wohl diesen Parent, den man eigentlich nicht vermutet.

    Nichtsdestotrotz bin auch an einer Methode interessiert, wie in meinem ersten Post beschrieben, ein Programmm zu starten und direkt das Handle zu erhalten. Ich werde da mal weiter nach Möglichkeiten forschen. Falls das jemand schonmal gemacht hat, darf er gerne posten wie :).

    Danke nochmal für die Tipps.

    Gruß moejoe

    BTW @kingruedi: hast du den Artikel "Dateisystemprogrammierung in C++ mit Boost und More" im aktuellen Linux Magazin geschrieben?



  • Die Titelleisten und Ränder bastelt der WindowManager glaube ich mittels so eines Parent-Fensters um die eigentlichen Fenster. Aber es gibt auch ganz minimale WindowManager, die das nicht machen.

    BTW @kingruedi: hast du den Artikel "Dateisystemprogrammierung in C++ mit Boost und More" im aktuellen Linux Magazin geschrieben?

    ja


Log in to reply