2 changed files with 1 additions and 49 deletions
@ -1,45 +0,0 @@ |
|||||
from ctypes import * |
|
||||
from ctypes.wintypes import * |
|
||||
import win32process |
|
||||
|
|
||||
|
|
||||
class PROCESSENTRY32(Structure): |
|
||||
_fields_ = ( |
|
||||
('dwSize', DWORD,), |
|
||||
('cntUsage', DWORD,), |
|
||||
('th32ProcessID', DWORD,), |
|
||||
('th32DefaultHeapID', POINTER(ULONG),), |
|
||||
('th32ModuleID', DWORD,), |
|
||||
('cntThreads', DWORD,), |
|
||||
('th32ParentProcessID', DWORD,), |
|
||||
('pcPriClassBase', LONG,), |
|
||||
('dwFlags', DWORD,), |
|
||||
('szExeFile', c_char * MAX_PATH,), |
|
||||
) |
|
||||
|
|
||||
|
|
||||
def getppid(pid): |
|
||||
"""the Windows version of os.getppid""" |
|
||||
pe = PROCESSENTRY32() |
|
||||
pe.dwSize = sizeof(PROCESSENTRY32) |
|
||||
|
|
||||
snapshot = windll.kernel32.CreateToolhelp32Snapshot(2, 0) |
|
||||
try: |
|
||||
if not windll.kernel32.Process32First(snapshot, byref(pe)): |
|
||||
raise WindowsError |
|
||||
while pe.th32ProcessID != pid: |
|
||||
if not windll.kernel32.Process32Next(snapshot, byref(pe)): |
|
||||
raise WindowsError |
|
||||
result = pe.th32ParentProcessID |
|
||||
finally: |
|
||||
windll.kernel32.CloseHandle(snapshot) |
|
||||
|
|
||||
if result not in win32process.EnumProcesses(): |
|
||||
result = 1 |
|
||||
|
|
||||
return result |
|
||||
|
|
||||
|
|
||||
import os |
|
||||
if not hasattr(os, 'getppid'): |
|
||||
os.getppid = getppid |
|
Loading…
Reference in new issue