PROCESSENTRY32 (kernel32)
Last changed: -74.212.48.23

.
Summary

Holds various bits of process-related info

C# Signature:

[StructLayout(LayoutKind.Sequential)]
public struct PROCESSENTRY32
   {
      public uint dwSize;
      public uint cntUsage;
      public uint th32ProcessID;
      public IntPtr th32DefaultHeapID;
      public uint th32ModuleID;
      public uint cntThreads;
      public uint th32ParentProcessID;
      public int pcPriClassBase;
      public uint dwFlags;
      [MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)] public string szExeFile;
    };

VB.NET Signature:

<StructLayout(LayoutKind.Sequential)> _
Public Structure PROCESSENTRY32
    Public dwSize As UInteger
    Public cntUsage As UInteger
    Public th32ProcessID As UInteger
    Public th32DefaultHeapID As IntPtr
    Public th32ModuleID As UInteger
    Public cntThreads As UInteger
    Public th32ParentProcessID As UInteger
    Public pcPriClassBase As Integer
    Public dwFlags As UInteger
    <VBFixedString(260), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szExeFile As String
End Structure

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

See CreateToolhelp32Snapshot

Documentation

I found a different PROCESSENTRY32 structure I needed to use on Windows Mobile (6.x)

C# Signature:

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
    public struct PROCESSENTRY32
    {
        const int MAX_PATH = 260;
        internal UInt32 dwSize;
        internal UInt32 cntUsage;
        internal UInt32 th32ProcessID;
        internal IntPtr th32DefaultHeapID;
        internal UInt32 th32ModuleID;
        internal UInt32 cntThreads;
        internal UInt32 th32ParentProcessID;
        internal Int32 pcPriClassBase;
        internal UInt32 dwFlags;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)]
        internal string szExeFile;
        public uint th32MemoryBase;
        public uint th32AccessKey;
    }

Possibly you need to use this definition if Process32First fails with error code 87 (invalid argument)