Vamos a guardarnos un referencia del proceso para poder acceder a él y poder consultar o cambiar sus propiedades o estado. Esta referencia se consigue guardando el retorno de:
import subprocess
import time
def CrearProceso():
try:
SW_SHOWMAXIMIZED = 3
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = SW_SHOWMAXIMIZED
proc = subprocess.Popen('notepad.exe', startupinfo=info)
return proc
except subprocess.CalledProcessError as e:
print(e.output)
p = CrearProceso()
print ("El PID de este proceso es: " + str(p.pid))
time.sleep(5)
Si queremos acceder a los procesos del sistema, pueden ser recurados a través de la librería psutil, iterando a través de process_iter().
Ver módulos instalados:
PS C:\Users\juanj> pip list
Package Version
---------- -------
pip 23.3.1
psutil 5.9.6
setuptools 65.5.0
PS C:\Users\juanj>
Para sistemas Linux:
sudo apt install gcc python3-dev
sudo pip install --upgrade psutil
python -m pip install psutil
Ver módulos instalados:
Esta librería no viene instalada por defecto habrá que instalarla con pip install psutil
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian\home\juanjo\python> pip install psutil
Requirement already satisfied: psutil in c:\users\juanj\appdata\local\programs\python\python311\lib\site-packages (5.9.6)
[notice] A new release of pip is available: 23.2.1 -> 23.3.1
[notice] To update, run: C:\Users\juanj\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian\home\juanjo\python> C:\Users\juanj\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip
Requirement already satisfied: pip in c:\users\juanj\appdata\local\programs\python\python311\lib\site-packages (23.2.1)
Collecting pip
Obtaining dependency information for pip from https://files.pythonhosted.org/packages/47/6a/453160888fab7c6a432a6e25f8afe6256d0d9f2cbd25971021da6491d899/pip-23.3.1-py3-none-any.whl.metadata
Using cached pip-23.3.1-py3-none-any.whl.metadata (3.5 kB)
Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 657.8 kB/s eta 0:00:00Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 23.2.1
Uninstalling pip-23.2.1:
Successfully uninstalled pip-23.2.1
Successfully installed pip-23.3.1
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian\home\juanjo\python>
#instalar psutil: pip install psutil
import psutil
try:
for proc in psutil.process_iter():
#Obtener el nombre y el PID de cada proceso
processName = proc.name()
processID = proc.pid
print(processName , ' ::: ', processID)
#except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
except:
print("error")
PS D:\psp\python> & 'C:\Users\juanj\AppData\Local\Microsoft\WindowsApps\python3.11.exe' 'c:\Users\juanj\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '52686' '--' 'D:\psp\python\p6.py'
System Idle Process ::: 0
System ::: 4
::: 56
Registry ::: 108
smss.exe ::: 436
fontdrvhost.exe ::: 508
svchost.exe ::: 540
csrss.exe ::: 692
igfxEM.exe ::: 712
wininit.exe ::: 788
services.exe ::: 860
LsaIso.exe ::: 880
...
Teams.exe ::: 19292
LockApp.exe ::: 19432
StartMenuExperienceHost.exe ::: 19712
svchost.exe ::: 19740
opera.exe ::: 19776
python3.11.exe ::: 19812
cloud-drive-ui.exe ::: 20352
Code.exe ::: 20396
powershell.exe ::: 20440
wmic: consola de windows para acceder a las herramientas de administración.
Enumeración de procesos windows:
import subprocess
# obtención de los procesos
Datos = subprocess.check_output(['wmic', 'process', 'list', 'brief'])
a = str(Datos)
try:
for i in range(len(a)):
print(a.split("\\r\\r\\n")[i])
except IndexError as e:
print("Finalizado")