enumerate windows threads
Published: 12. February 2012 | Updated: 12. February 2012License: Microsoft Public License (MS-PL)
Categories: Windows
Tags: C# Threading Win32 Windows WMI
Import namespaces
using System; using System.Collections.Generic; using System.Management; // requires adding System.Management reference to project
Code
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Thread"); ManagementObjectCollection collection = searcher.Get(); var items = new List<Win32_Thread>(); foreach (ManagementObject obj in collection) { var item = new Win32_Thread(); item.Caption = (string)obj["Caption"]; item.CreationClassName = (string)obj["CreationClassName"]; item.CSCreationClassName = (string)obj["CSCreationClassName"]; item.CSName = (string)obj["CSName"]; item.Description = (string)obj["Description"]; item.ElapsedTime = (ulong?)obj["ElapsedTime"]; item.ExecutionState = (ushort?)obj["ExecutionState"]; item.Handle = (string)obj["Handle"]; item.InstallDate = (DateTime?)obj["InstallDate"]; item.KernelModeTime = (ulong?)obj["KernelModeTime"]; item.Name = (string)obj["Name"]; item.OSCreationClassName = (string)obj["OSCreationClassName"]; item.OSName = (string)obj["OSName"]; item.Priority = (uint?)obj["Priority"]; item.PriorityBase = (uint?)obj["PriorityBase"]; item.ProcessCreationClassName = (string)obj["ProcessCreationClassName"]; item.ProcessHandle = (string)obj["ProcessHandle"]; item.StartAddress = (uint?)obj["StartAddress"]; item.Status = (string)obj["Status"]; item.ThreadState = (uint?)obj["ThreadState"]; item.ThreadWaitReason = (uint?)obj["ThreadWaitReason"]; item.UserModeTime = (ulong?)obj["UserModeTime"]; items.Add(item); }
Class
public class Win32_Thread { public string Caption; public string CreationClassName; public string CSCreationClassName; public string CSName; public string Description; public ulong? ElapsedTime; public ushort? ExecutionState; public string Handle; public DateTime? InstallDate; public ulong? KernelModeTime; public string Name; public string OSCreationClassName; public string OSName; public uint? Priority; public uint? PriorityBase; public string ProcessCreationClassName; public string ProcessHandle; public uint? StartAddress; public string Status; public uint? ThreadState; public uint? ThreadWaitReason; public ulong? UserModeTime; }
| Send us feedback about this snippet » |





