1 pièce(s) jointe(s)
[opensuse 12.2 -- kde] dbus -- invoquer une méthode "à distance"
Greetings !!
Comme je sais que les programmeurs ne peuvent pas laisser leur ordinateur tout seul même le jour du réveillon de Nouvel An (bonne année d'avance à tous d'ailleurs ^^), je me permet de poster une requête.
Hier j'ai calé sur un petit problème: je voudrais quand mon programme écrit en C s'arrête que la console (ici Konsole sous kde) se ferme.
La fonction kill() couplée avec getppid() retourne le pid du bash ce qui n'est pas très efficace.
J'ai donc, tout naturellement, cherché à savoir comment "discuter" avec Konsole pour lui dire "de se fermer".
C'est dbus (desktop bus) qui se charge de permettre la communication avec toutes les applications, fenêtres, etc... qui tournent sous KDE.
J'ai bien trouvé ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
DBusError DBUSerreur;
dbus_error_init(&DBUSerreur);
DBusConnection *ConnexionAuBureau=dbus_bus_get(DBUS_BUS_SESSION,&DBUSerreur);
if(ConnexionAuBureau!=NULL)
{
DBusMessage *message;
message=dbus_message_new_method_call("org.kde.konsole","/org/kde/konsole","org.kde.KApplication","quit");
if(message!=NULL)
{
printf("...envoi du message...\n");
dbus_connection_send(ConnexionAuBureau,message,NULL);
dbus_message_unref(message);
}
}
dbus_error_free(&DBUSerreur); |
...mais ça ne marche pas ^^
Voici ce que je retrouve avec dbus-monitor (qui capte tous les évènements liés à dbus):
Citation:
method call sender=:1.82 -> dest=org.kde.konsole serial=2 path=/org/kde/konsole; interface=org.kde.KApplication; member=quit
error sender=:1.36 -> dest=:1.82 error_name=org.freedesktop.DBus.Error.UnknownObject reply_serial=2
string "No such object path '/org/kde/konsole'"
...je ne comprends pas bien... quand je fais
qdbus org.kde.konsole /KApplication, j'obtiens:
Pièce jointe 165105
...pour moi org.kde.desktop existe et l'interface org.kde.KApplication existe également... le path ne semble pas correct que je mette /org/kde/konsole/MainApplication ou pas...
Je cherche de la documentation (elle existe sur le site de freedesktop mais c'est de la m****) au format PDF, ou des explications supplémentaires de la part
de personnes qui ont déjà "chipoté" avec dbus.