求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版本下运行结果正常...
不要通过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)