Click here to Skip to main content
13,043,092 members (61,034 online)
Rate this:
Please Sign up or sign in to vote.
See more:
Enumerates active processes as seen under windows Task Manager on Win NT/2k/XP using PSAPI.dll
(new api for processes) and using ctypes.Use it as you please.
Based on information from;EN-US;Q175030&ID=KB;EN-US;Q175030
By Eric Koome
license GPL
from ctypes import *
psapi = windll.psapi
kernel = windll.kernel32
def EnumProcesses():
    arr = c_ulong * 256
    lpidProcess= arr()
    cb = sizeof(lpidProcess)
    cbNeeded = c_ulong()
    hModule = c_ulong()
    count = c_ulong()
    modname = c_buffer(30)
    PROCESS_VM_READ = 0x0010
    #Call Enumprocesses to get hold of process id's
    #Number of processes returned
    nReturned = cbNeeded.value/sizeof(c_ulong())
    pidProcess = [i for i in lpidProcess][:nReturned]
    for pid in pidProcess:
        #Get handle to the process based on PID
        hProcess = kernel.OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
                                      False, pid)
        if hProcess:
            psapi.EnumProcessModules(hProcess, byref(hModule), sizeof(hModule), byref(count))
            psapi.GetModuleBaseNameA(hProcess, hModule.value, modname, sizeof(modname))
            print "".join([ i for i in modname if i != '\x00'])
            #-- Clean up
            for i in range(modname._length_):
if __name__ == '__main__':
Posted 25-Jan-11 8:39am
SAKryukov 25-Jan-11 14:40pm
Thank you for sharing your code.
Do you have any questions?
Sandeep Mewara 26-Jan-11 9:54am
Update your question and elaborate on issue.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web01 | 2.8.170713.1 | Last Updated 25 Jan 2011
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100