Получить список запущенных приложений Windows, использующих Python - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу вернуть только те приложения, которые перечислены в категории «Приложения» в диспетчере задач Windows, а НЕ все запущенные процессы.Сценарий ниже возвращает все процессы, которые я не хочу.Как я могу изменить этот код в соответствии с моими требованиями?

import subprocess
cmd = 'WMIC PROCESS get Caption,Commandline,Processid'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    print(line)

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете использовать powershell вместо WMIC , чтобы получить требуемый список приложений:

import subprocess
cmd = 'powershell "gps | where {$_.MainWindowTitle } | select Description'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    if line.rstrip():
        # only print lines that are not empty
        # decode() is necessary to get rid of the binary string (b')
        # rstrip() to remove `\r\n`
        print(line.decode().rstrip())

Получение пустой таблицы?

Обратите внимание, что в некоторых системах это приводит к пустой таблице, так как описание кажется пустым.В этом случае вам может потребоваться использовать другой столбец, например ProcessName, в результате чего будет получена следующая команда:

cmd = 'powershell "gps | where {$_.MainWindowTitle } | select ProcessName'

Нужно больше столбцов / информации в выводе?

Если выхотите получить дополнительную информацию , например идентификатор процесса или путь приведение в порядок выходных данных требует немного больше усилий.

import subprocess
cmd = 'powershell "gps | where {$_.MainWindowTitle } | select Description,Id,Path'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    if not line.decode()[0].isspace():
        print(line.decode().rstrip())

вывод cmd - это текст в формате таблицы.К сожалению, он возвращает больше, чем просто нужные нам приложения, поэтому нам нужно немного привести в порядок.Все нужные приложения имеют запись в столбце Description , поэтому мы просто проверяем, является ли первый символ пробелом или нет.

Это то, как будет выглядеть исходная таблица (доisspace() если предложение):

Description                                    Id Path
-----------                                    -- ----
                                              912
                                             9124
                                            11084
Microsoft Office Excel                       1944 C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...