3

I know that there are a couple of ways to complete that task using psutil or win32ui modules. But I wonder if there's an option to do that using Python built-in modules only? I have also found this question:

Check if PID exists on Windows with Python without requiring libraries

But in this case the object is located by PID and I want to do it using process name.

Community
  • 1
  • 1
Eugene S
  • 6,709
  • 8
  • 57
  • 91

3 Answers3

6

Maybe this will help you:

import subprocess

s = subprocess.check_output('tasklist', shell=True)
if "cmd.exe" in s:
    print s
Lexx Tesla
  • 151
  • 2
  • 6
1

Without PyWin32, you're going to have to go at it the hard way and use Python's ctypes module. Fortunately, there is already a post about this here on StackOverflow:

You might also find this article useful for getting a list of the running processes:

Community
  • 1
  • 1
Mike Driscoll
  • 32,629
  • 8
  • 45
  • 88
0

If all you're trying to do is test whether a process is running by its process name, you could just import the check_output method from the subprocess module (not the entire module):

from subprocess import check_output

print('Test whether a named process appears in the task list.\n')
processname = input('Enter process name: ')   # or just assign a specific process name to the processname variable 
tasks = check_output('tasklist')
if processname in str(tasks):
    print('{} is in the task list.'.format(processname))
else:
    print('{} not found.'.format(processname))

Output:

>>> Discord.exe
Discord.exe is in the task list.

>>> NotARealProcess.exe
NotARealProcess.exe not found.

(This works for me on Windows 10 using Python 3.10.) Note that since this is just searching for a specific string across the entire task list output, it will give false positives on partial process names (such as "app.exe" or "app" if "myapp.exe" is running) and other non-process text input that happens to be in the task list:

>>> cord.ex
cord.ex is in the task list.

>>> PID Session Name
PID Session Name is in the task list.

This code generally should work fine if you just want to find a known process name in the task list and are searching by the whole name, but for more rigorous uses, you might want to use a more complex approach like parsing the task list into a dictionary and separating out the names for more focused searching, as well as add some error checking to handle edge cases.

Memetics
  • 1
  • 2