11. [pywin32] EnumProcess 관련 함수
1. (long,....) = EnumProcesses()
현재 동작하는 프로세스를 열거하는 함수입니다.
리턴값은 현재 동작하는 프로세스 아이디 목록입니다.
2. (long,....) = EnumProcessModules(hProcess)
특정 프로세스가 사용하는 모듈의 목록을 반환합니다.
인자로는 hProcess : PyHANDLE 가 있습니다.
hProcess: 프로세스 핸들값입니다.
리턴값은 프로세스가 사용하는 모듈의 핸들값 목록입니다.
3. (long,....) = EnumProcessModulesEx(hProcess, FilterFlag )
EnumProcessModules 처럼 특정 프로세스가 사용하는 모듈의 목록을 반환합니다. 하지만 FilterFlag 변수를 이용해 특정 모듈만 반환할 수 있습니다.
인자로는 hProcess : PyHANDLE, FilterFlag=LIST_MODULES_DEFAULT : int 가 있습니다.
hProcess: 프로세스 핸들값입니다.
FilterFlag: 32bit와 64bit 모듈 중 어떤걸 혹은 다 반환할 지 정하는 값입니다.
값 | 이름 | 의미 |
0x01 | win32process.LIST_MODULES_32BIT | 32bit 모듈만을 반환합니다. |
0x02 | win32process.LIST_MODULES_64BIT | 64bit 모듈만을 반환합니다. |
0x03 | win32process.LIST_MODULES_ALL | 모든 모듈을 반환합니다. |
0x0 | win32process.LIST_MODULES_DEFAULT | 기본 동작입니다. |
리턴값은 프로세스가 사용하는 모듈의 핸들값 목록입니다.
4. PyUNICODE = GetModuleFileNameEx(hProcess, hModule )
프로세스나 모듈의 이름을 반환합니다.
인자로는 hProcess : PyHANDLE, hModule : PyHANDLE 가 있습니다.
hProcess: 프로세스 핸들값입니다.
hModule: 모듈의 핸들값입니다.
- 만약, 이 값은 None으로 준다면 hProcess의 프로세스 이름을 반환합니다.
리턴값은 프로세스 혹은 모듈의 이름입니다.
import win32process
import win32api
import win32con
enumProcesses = win32process.EnumProcesses()
for pid in enumProcesses:
try:
if pid==0 or pid==4:
print(f"{pid} is system process!!")
else:
psHandle = win32api.OpenProcess(win32con.MAXIMUM_ALLOWED, \
win32con.FALSE, \
pid)
#enumModule = win32process.EnumProcessModules(psHandle)
enumModule = win32process.EnumProcessModulesEx(psHandle, win32process.LIST_MODULES_DEFAULT)
psName = win32process.GetModuleFileNameEx(psHandle, None)
for mod in enumModule:
mdName = win32process.GetModuleFileNameEx(psHandle, mod)
print(f"{pid} processName: {psName} module Name : {mdName}")
win32api.CloseHandle(psHandle)
except Exception as e:
print(f"{pid} is error : {e}")
프로세스 핸들값을 얻기 위해 OpenProcess를 사용했으며, 이에 대한 설명은 win32api에서 다루겠습니다. 0과 4의 경우는 시스템 프로세스라 따로 뺐고, 이 외에도 OpenProcess를 통해 프로세스 핸들값은 얻어오지 못하는 프로세스들이 많더라구요... 일단을 핸들값을 얻을 수 있는 애들로만 진행했습니다. 위 예제는 파이썬을 관리자 권한으로 실행시킨 후 진행하셔야 합니다.
아래는 결과입니다.
'pywin32 > win32process' 카테고리의 다른 글
13. [pywin32] GetProcess... 관련 함수 - 3 (0) | 2020.12.29 |
---|---|
12. [pywin32] GetProcess... 관련 함수 - 2 (0) | 2020.12.28 |
10. [pywin32] GetProcess... 관련 함수 - 1 (0) | 2020.12.26 |
9. [pywin32] ExitProcess & TerminateProcee 및 관련 함수 (0) | 2020.12.25 |
8. [pywin32] CreateProcess 및 기타 함수 (0) | 2020.12.24 |