求python枚举windows 操作系统进程的源代码,该怎么解决

求python枚举windows 操作系统进程的源代码
不要通过tasklist的。
我要的是通过windows api调用来实现的。
由于我的代码在ProcessFirst32这个函数一直返回FALSE,之前的结构体PROCESSENTRY32的dwSize都已经设置过了。但是还是一直返回FALSE.
经过我多天的苦闷不爽的探索,决定将这个问题提出来,望喜欢python的朋友能帮我这个大忙。

注意啊:
1.不要tasklist的。
2.求调用windows api来实现的。

有问题 可以电子邮件联系或者就在****论坛联系也行。
我的email:sc_email_personal@163.com


------解决方案--------------------
下面代码是从网上抄录下来的,32位python27版本下运行结果正常...
import ctypes

CreateToolhelp32Snapshot = ctypes.windll.kernel32.CreateToolhelp32Snapshot
Process32First = ctypes.windll.kernel32.Process32First
Process32Next = ctypes.windll.kernel32.Process32Next
CloseHandle = ctypes.windll.kernel32.CloseHandle

TH32CS_SNAPPROCESS = 0x00000002
class PROCESSENTRY32(ctypes.Structure):
     _fields_ = [("dwSize", ctypes.c_ulong),
                 ("cntUsage", ctypes.c_ulong),
                 ("th32ProcessID", ctypes.c_ulong),
                 ("th32DefaultHeapID", ctypes.c_ulong),
                 ("th32ModuleID", ctypes.c_ulong),
                 ("cntThreads", ctypes.c_ulong),
                 ("th32ParentProcessID", ctypes.c_ulong),
                 ("pcPriClassBase", ctypes.c_ulong),
                 ("dwFlags", ctypes.c_ulong),
                 ("szExeFile", ctypes.c_char * 260)]
                 

def get_process_info():
     h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
     pe = PROCESSENTRY32()
     pe.dwSize = ctypes.sizeof(PROCESSENTRY32)
     if Process32First(h, ctypes.byref(pe)):
        while True:
            yield pe.th32ProcessID, pe.szExeFile
            if not Process32Next(h,  ctypes.byref(pe)):
                break
     CloseHandle(h)
     
if __name__ == '__main__':
    for pid, name in get_process_info():
        print "%4d: %s" % (pid, name)