gpt4 book ai didi

python - Linux中用Python获取事件窗口的进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:45 25 4
gpt4 key购买 nike

借助这些

Get active window title in X

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com