Как перечислить потоки с помощью типов CreateToolhelp32Snapshot и Python?Python

Программы на Python
Anonymous
Как перечислить потоки с помощью типов CreateToolhelp32Snapshot и Python?

Сообщение Anonymous »

Кажется, что он должен печатать идентификатор первого потока в снимке, но он всегда печатает 0. Что в этом плохого?
Ниже предполагается, что процесс с идентификатором 1234 является реальным работающим процессом.
import ctypes
from ctypes import wintypes

pid = 1234

TH32CS_SNAPTHREAD = 0x00000004

kernel32 = ctypes.windll.kernel32

class THREADENTRY32(ctypes.Structure):
_fields_ = [
('dwSize', wintypes.DWORD),
('cntUsage', wintypes.DWORD),
('th32ThreadID', wintypes.DWORD),
('th32OwnerProcessID', wintypes.DWORD),
('tpBasePri', wintypes.LONG),
('tpDeltaPri', wintypes.LONG),
('dwFlags', wintypes.DWORD)
]

CreateToolhelp32Snapshot = kernel32.CreateToolhelp32Snapshot
CreateToolhelp32Snapshot.argtypes = (wintypes.DWORD, wintypes.DWORD, )
CreateToolhelp32Snapshot.restype = wintypes.HANDLE

h_snapshot = kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, pid)

LPTHREADENTRY32 = ctypes.POINTER(THREADENTRY32)
Thread32First = kernel32.Thread32First
Thread32First.argtypes = (wintypes.HANDLE, LPTHREADENTRY32, )
Thread32First.restype = wintypes.BOOL
thread_entry = THREADENTRY32()
thread_entry.dwSize = ctypes.sizeof(THREADENTRY32)

if kernel32.Thread32First(h_snapshot, ctypes.byref(thread_entry)):
print(thread_entry.th32ThreadID)


Подробнее здесь: https://stackoverflow.com/questions/786 ... hon-ctypes

Вернуться в «Python»