2012-03-20 89 views

回答

2

你可能想看看Qt DBus List Names example

QDBusConnection bus = QDBusConnection::sessionBus(); 
QDBusInterface dbus_iface("org.freedesktop.DBus", "/org/freedesktop/DBus", 
          "org.freedesktop.DBus", bus); 
qDebug() << dbus_iface.call("ListNames").arguments().at(0); 

下面是使用命令行的例子:

# qdbus --literal --system org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames 
{"org.freedesktop.DBus", ":1.23", ":1.31", "org.freedesktop.Avahi", ":1.24", ":1.26"} 
# dbus-send --system --dest=org.freedesktop.DBus --print-reply=literal /org/freedesktop/DBus org.freedesktop.DBus.ListNames 
    array [ 
     org.freedesktop.DBus  :1.23  org.freedesktop.Avahi  :1.24  :1.33  :1.26 ] 

你也可能只是想直接去源,工具/ qdbus/qdbus/qdbus.cpp,在QT源。在那裏,你會發現,如果args.empty()它調用printServiceNames()剛剛返回的registeredServiceNames()呼籲系統總線接口的結果。然後,該代碼執行以下操作:

QDBusReply<QStringList> QDBusConnectionInterface::registeredServiceNames() const 
{ 
    return internalConstCall(QDBus::AutoDetect, QLatin1String("ListNames")); 
} 

現在我們來了整整一圈。

+0

在這個答案的鏈接已被打破/移到 http://doc.qt.digia.com/4.7/dbus-listnames-listnames-cpp.html – dmiller309 2013-05-21 00:53:55

+0

@ dmiller309:謝謝,更新 – Harvey 2013-05-30 01:21:48

+1

這裏是鏈接: http://unix.stackexchange.com/questions/46301/a-list-of-available-dbus-services#來顯示使用發送-DBUS: – AjayKumarBasuthkar 2014-03-21 07:20:46