psutil
кажется, то, что Вы могли бы хотеть.
То, что неясно в Вашем вопросе, - хотите ли Вы исполняемое имя или заголовок окна. Однако, если Вы после имени исполняемого процесса можно сделать это с psutil
и некоторые другие функции.
Во-первых, установка psutil
с pip
(Python 2) или pip3
(Python 3). Если команда не найдена затем установку python-pip
или python3-pip
пакеты, в зависимости от который версия Python Вы работаете с:
# Python 2
sudo pip install psutil
# Python 3
sudo pip3 install psutil
Затем, мы можем использовать psutil
в любом данном сценарии Python и передаче PID. Это - пример того, что он может сделать путем выполнения python3
в командной строке, работающей с интерактивной оболочкой Python 3 и добирающейся, который информация процесса с помощью Python кодирует прямо на оболочке Python:
>>> import psutil
>>> import os
>>> os.getpid()
6284
>>> p = psutil.Process(os.getpid())
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3.5'
>>> p.cmdline()
['python3']
>>>
Поскольку Вы видите, что можно получить другую информацию от системы о процессе в обоих Windows или Linux с этими утилитами, хотя все еще необходимо установить пакет Python сначала.
Править
Мы можем также объединить это в цепочку с ответом Jacob Vlijm здесь также, чтобы получить PID и передать его в psutil
(Обратите внимание, что я сокращаю 'подпроцесс' к 'SP' в моем импорте, но это все еще subprocess
модуль):
import psutil
import subprocess as sp
p = psutil.Process(int(sp.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()))
... и затем продолжите использовать psutil
извлечь определенные данные.
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()
import subprocess
pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()
print(pid)
, но вам нужно установить xdotool
:
sudo apt install xdotool
Мы даже можем превзойти pid:
#!/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)
Имейте ввиду, что WM_CLASS часто, но не обязательно всегда является именем процесса .