windows下查看所有进程以及pid

时间:2021-03-03 19:44:54
import ctypes
import sys
__metaclass__ = type

class PROCESSENTRY32(ctypes.Structure):
    _fields_ = [
        ("dwSize",ctypes.c_ulong),
        ("cntUsage",ctypes.c_ulong),
        ("th32ProcessID",ctypes.c_ulong),
        ("th32DefaultHeapID",ctypes.c_void_p),
        ("th32ModuleID",ctypes.c_ulong),
        ("cntThreads",ctypes.c_ulong),
        ("th32ParentProcessID",ctypes.c_ulong),
        ("pcPriClassBase",ctypes.c_long),
        ("dwFlags",ctypes.c_ulong),
        ("szExeFile",ctypes.c_char*260)
    ]
def process():
    kernel32 = ctypes.windll.LoadLibrary("kernel32.dll")
    pHandle = kernel32.CreateToolhelp32Snapshot(0x2,0x0)
    if pHandle == -1:
        sys.exit()
    proc = PROCESSENTRY32()
    proc.dwSize = ctypes.sizeof(proc)
    while kernel32.Process32Next(pHandle,ctypes.byref(proc)):
        print("%d-%s"%(proc.th32ProcessID,ctypes.string_at(proc.szExeFile)))
    kernel32.CloseHandle(pHandle)
   
if __name__ == '__main__':
    process()