Qt DBus Monitor方法调用

乔治·索菲亚诺斯

我想知道是否有通过QtDbus来“监视”特定服务的方法调用的简便方法例如,我希望在对org.freedesktop.Notifications进行Notify方法调用时能够“捕获”它并读取其参数。

注意*

我可能找到了使用dbus-monitor应用程序的解决方案,但我想知道是否有更好的方法来访问Qt Dbus库。

bks

是的,您应该能够通过QtDBus进行这项工作(需要一些工作)。从根本上讲,消息总线上的任何客户端都可以订阅任何消息-仅受总线安全策略的限制。(因此,除非您具有调试访问权限的应用程序或消息总线的调试访问权限,否则就无法监视它。)关键是您要org.freedesktop.DBus.AddMatch在总线本身上使用该方法:

// first connect our handler object to the QDBusConnection so that it knows what
// to do with the incoming Notify calls
// slotNotifyObserved() must have a compatible signature to the DBus call
QDBusConnection::sessionBus().connect("", // any service name
                                      "", // any object path
                                      "org.freedesktop.Notifications",
                                      "Notify",
                                      myImplementingQObject,
                                      SLOT(slotNotifyObserved(...));

// then ask the bus to send us a copy of each Notify call message
QString matchString = "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'";
QDBusInterface busInterface("org.freedesktop.DBus", "/org/freedesktop/DBus", 
                            "org.freedesktop.DBus");
busInterface.call("AddMatch", matchString);

// once we get back to the event loop our object should be called as other programs
// make Notify() calls

的DBus规范给出了各种匹配字段就可以去参加的上市matchString

为了更好地了解发生了什么,QDBus文档建议设置环境变量,QDBUS_DEBUG=1以使您的应用程序记录有关其dbus消息传递的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt DBus Monitor方法调用

来自分类Dev

QDbusReply不能调用DBus函数来返回带有Qt4的aa {sv}吗?

来自分类Dev

Qt DBus属性转换为地图

来自分类Dev

C中的Dbus结构和方法调用

来自分类Dev

从外壳dbus-send在C中调用dbus

来自分类Dev

从外壳dbus-send在C中调用dbus

来自分类Dev

如何读取dbus-monitor输出?

来自分类Dev

如何读取dbus-monitor输出?

来自分类Dev

如何使用cmake启用Qt Dbus封送处理?

来自分类Dev

在gjs中使用GDBus调用DBus方法,没有输出?

来自分类Dev

将结构传递给dbus方法的工具?

来自分类Dev

通过dbus从终端注销的通用方法

来自分类Dev

DBUS 调用失败:GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown

来自分类Dev

如何在不阻塞主线程的情况下使用Qt-Dbus绑定

来自分类Dev

Qt使用QVariant调用方法

来自分类Dev

永远不会调用DBus信号接收器

来自分类Dev

谁将在 dbus 中调用 message_function。

来自分类Dev

GLib-GIO-CRITICAL错误在dbus接口上调用方法时

来自分类Dev

dbus-cxx中的方法调用后接收多个参数

来自分类Dev

如何在C ++中将变量变量传递给DBUS方法调用?

来自分类Dev

dbus-cxx中的方法调用后接收多个参数

来自分类Dev

DBus 上的第二类方法不可调用

来自分类Dev

DBus与其他进程间通信方法之间的区别

来自分类Dev

使用Python注册“ Hello World” DBus服务,对象和方法

来自分类Dev

通过dbus接口关闭Arch Linux的正确方法是什么?

来自分类Dev

无法在Qt中调用静态方法

来自分类Dev

Qt Quick 2 Paint方法未调用

来自分类Dev

在Qt中从C ++调用Java方法

来自分类Dev

C ++-QT Framework /无法调用方法