it-swarm.com.de

Den Namen des Prozesses ermitteln, der dem aktiven Fenster entspricht

Wie geht das mit Python in Ubuntu?

3
user71215

psutil scheint das zu sein, was Sie vielleicht wollen.

In Ihrer Frage ist unklar, ob Sie den Namen der ausführbaren Datei oder den Fenstertitel möchten. Wenn Sie jedoch nach dem Namen des ausführbaren Prozesses suchen, können Sie dies mit psutil und einigen anderen Funktionen tun.

Installieren Sie zuerst psutil mit pip (Python 2) oder pip3 (Python 3). Wenn der Befehl nicht gefunden wird, installieren Sie die Pakete python-pip oder python3-pip, je nachdem, mit welcher Python Version Sie arbeiten:

# Python 2
Sudo pip install psutil

# Python 3
Sudo pip3 install psutil

Als Nächstes können wir psutil in einem beliebigen Python Skript verwenden und eine PID übergeben. Dies ist ein Beispiel für die Funktionsweise, indem Sie python3 in der Befehlszeile ausführen, mit der interaktiven Python 3-Shell arbeiten und die Informationen dieses Prozesses mithilfe von Python-Code abrufen direkt auf der Python Shell:

>>> import psutil
>>> import os
>>> os.getpid()
6284
>>> p = psutil.Process(os.getpid())
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3.5'
>>> p.cmdline()
['python3']
>>>

Wie Sie sehen, können Sie mit diesen Dienstprogrammen unterschiedliche Informationen über den Prozess unter Windows oder Linux vom System abrufen, obwohl Sie zunächst noch das Python -Paket installieren müssen.


EDIT

Wir können dies auch mit der Antwort von Jacob Vlijm hier verketten, um die PID zu erhalten und an psutil zu übergeben. aber es ist immer noch das subprocess -Modul):

import psutil
import subprocess as sp

p = psutil.Process(int(sp.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()))

... und verwenden Sie dann weiterhin psutil, um bestimmte Daten zu extrahieren.

2
Thomas Ward

Kurze Antwort

import subprocess

pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()

print(pid)

sie müssen jedoch xdotool installieren:

Sudo apt install xdotool

Ruft den Namen der WM_CLASS ab

Wir können sogar die PID übertreffen:

#!/usr/bin/env python3
import subprocess

w_id = subprocess.check_output(["xdotool", "getactivewindow"]).decode("utf-8")
name = subprocess.check_output(["xprop", "-id", w_id, "WM_CLASS"]).decode("utf-8").strip()

print(name)

Bedenke aber, dass die WM_CLASS oft, aber nicht unbedingt immer der Prozess ist Name.

1
Jacob Vlijm
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()
0
ADcomp