Unter MS/Windows gibt es viele nützliche Funktionen, um alle offenen Windows zu erfassen (EnumWindows), ihre Handles (HWND) zu erfahren und ihnen Botschaften zu senden (SendMessage()). Gibt es was vergleichbares auch in Linux/X11? Ich meine nicht die Prozesse mit ihren ID, sondern schon vergleichbares mit HWND.
Ich habe gegoogelt und das hier gefunden: http://brugbart.com/autoit-alternative-linux https://github.com/jordansissel/xdotool Ist leider nur ein terminal Programm und keine Bibliothek um selber Programmer zu schreiben, aber im Prinzip ist das schon mal nicht schlecht, d.h. geht in eine ähnliche Richtung.
Ohne genauere Ahnung zu haben könnt ich mir vorstellen dass es da nichts universelles gibt, sondern mögliche Lösungen abhängig sind von der gewählten Desktopumgebung/Fenstermanager.
xdotool funktioniert angeblich für alle x11 Umgebungen und bei meiner (lxde) konnte ich das verifizieren. Mal schauen, das Tool ist sehr mächtig.
Die ganzen Lowlevel-Funktionen zur Fenster und Nachrichtenverwaltung findest du in der X11 API (clientside). Hier die umfangreiche Dokumentation: http://www.x.org/releases/X11R7.5/doc/libX11/libX11.html Da findest du die z.B auch die Handles:
1 | Window XCreateWindow(display, parent, x, y, width, height, border_width, depth, |
2 | class, visual, valuemask, attributes) |
Sicher findest du aber auch Tutorials dazu.
Da ist mir doch noch was dazu eingefallen. Eine schöne Einführung in X11 (und sogar Linux C Programmierung): http://openbook.galileocomputing.de/linux_unix_programmierung/Kap14-000.htm#Xxx999235
Unter KDE z.B. kannst du per DBUS viele Programme fernsteuern. Ist evtl. einfacher als auf X11-Ebene anzusetzen, da auf einem viel höherem Level eingegriffen wird. (Geht vermutlich auch ähnlich unter Gnome) DBUS-Bindings gibt's für so ziemlich jede Script- und Programmiersprache. http://www.bramschoenmakers.nl/en/node/609
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.