借助这些
Obtain Active window using Python
我已经设法找到事件窗口的名称
import os, re, sys
from subprocess import PIPE, Popen
def get_active_window_title():
root = Popen( ['xprop', '-root', '_NET_ACTIVE_WINDOW'], stdout = PIPE )
stdout, stderr = root.communicate()
m = re.search( b'^_NET_ACTIVE_WINDOW.* ([\w]+)$', stdout )
if m is not None:
window_id = m.group( 1 )
window = Popen( ['xprop', '-id', window_id, 'WM_NAME'], stdout = PIPE )
stdout, stderr = window.communicate()
match = re.match( b'WM_NAME\(\w+\) = (?P<name>.+)$', stdout )
if match is not None:
return match.group( 'name' ).decode( 'UTF-8' ).strip( '"' )
return 'Active window not found'
if __name__ == '__main__':
print( get_active_window_title() )
但是,我也对控制窗口的进程名称(firefox、rstudio...)感兴趣。
关于如何进行的任何想法?
最佳答案
看看 this回答。它使用名为 xprop
的命令行工具和名为 wmctrl
的命令行工具来获取事件窗口的 PID。获得 PID 后,您就可以获得有关该进程的几乎任何信息。例如,要获取进程的名称,可以使用 python subprocess
模块执行以下命令:
ps -p 1337 -o comm=
上面将为您提供命令的名称,而以下内容:
ps -p 1337 -o command=
将为您提供命令的完整路径。
示例(Ubuntu 17.10):
命令:
ps -p 1 -o comm=
输出:
init
命令:
ps -p 1 -o command=
输出:
/sbin/init
关于python - Linux中使用Python获取事件窗口的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628209/