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.

3 Answers 3

6

Maybe this will help you:

import subprocess

s = subprocess.check_output('tasklist', shell=True)
if "cmd.exe" in s:
    print s
Sign up to request clarification or add additional context in comments.

Comments

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:

Comments

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.