RhythmboxがPython経由で実行されているかどうかを確認してください

StackOverflow https://stackoverflow.com/questions/4635462

  •  08-10-2019
  •  | 
  •  

質問

Rhythmboxから情報を抽出しようとしています dbus, 、しかし、Rhythmboxが実行されている場合にのみ、そうしたいのです。 RhythmboxがPythonが実行されていない場合、Pythonを介して実行されているかどうかを確認する方法はありますか?

私が呼び出すときはいつでも dbus このようなコード:

bus = dbus.Bus()
obj = bus.get_object("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
iface = dbus.Interface(obj, "org.gnome.Rhythmbox.Shell)

そして、Rhythmboxが実行されていないので、それを開始します。

経由で確認できますか dbus Rhythmboxが実際にそれを開始せずに実行されている場合は?それとも、現在実行されているプロセスのリストを解析する以外に、そうするための他の方法はありますか?

役に立ちましたか?

解決

これは、Rosh Oxymoronの答えに似ていますが、間違いなく(テストされていないが)、間違いなく耳障りです。

bus = dbus.SessionBus()
if bus.name_has_owner('org.gnome.Rhythmbox'):
    # ...

Rhythmboxが起動または停止したときに通知されたい場合は、以下を使用できます。

def rhythmbox_owner_changed(new_owner):
    if new_owner == '':
        print 'Rhythmbox is no longer running'
    else:
        print 'Rhythmbox is now running'

bus.watch_name_owner('org.gnome.Rhythmbox')

を参照してください dbus.bus.busconnectionのドキュメント 詳細については。

他のヒント

dbus_main_object = bus.get_object("org.freedesktop.DBus", "/")
dbus_names = dbus_main_object.ListNames(dbus_interface='org.freedesktop.DBus')
if 'org.gnome.Rhythmbox' in dbus_names:
    do_whatever()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top