Advertisement
Cromon

Program.cs

Oct 13th, 2012
1,172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.09 KB | None | 0 0
  1.         [DllImport("kernel32.dll", SetLastError = true)]
  2.         static public extern bool CloseHandle(IntPtr hHandle);
  3.  
  4.         [DllImport("kernel32.dll")]
  5.         static public extern bool Module32First(IntPtr hSnapshot, ref MODULEENTRY32 lpme);
  6.  
  7.         [DllImport("kernel32.dll")]
  8.         static public extern bool Module32Next(IntPtr hSnapshot, ref MODULEENTRY32 lpme);
  9.  
  10.         [DllImport("kernel32.dll", SetLastError = true)]
  11.         static public extern IntPtr CreateToolhelp32Snapshot(SnapshotFlags dwFlags, uint th32ProcessID);
  12.  
  13.         public const short INVALID_HANDLE_VALUE = -1;
  14.  
  15.         [Flags]
  16.         public enum SnapshotFlags : uint
  17.         {
  18.             HeapList = 0x00000001,
  19.             Process = 0x00000002,
  20.             Thread = 0x00000004,
  21.             Module = 0x00000008,
  22.             Module32 = 0x00000010,
  23.             Inherit = 0x80000000,
  24.             All = 0x0000001F
  25.         }
  26.  
  27.         [StructLayoutAttribute(LayoutKind.Sequential)]
  28.         public struct MODULEENTRY32
  29.         {
  30.             public uint dwSize;
  31.             public uint th32ModuleID;
  32.             public uint th32ProcessID;
  33.             public uint GlblcntUsage;
  34.             public uint ProccntUsage;
  35.             IntPtr modBaseAddr;
  36.             public uint modBaseSize;
  37.             IntPtr hModule;
  38.             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  39.             public string szModule;
  40.             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
  41.             public string szExePath;
  42.         };
  43.  
  44.         static void EnumProcessModules(uint procIDDDDDDDDDDDDD)
  45.         {
  46.             var snapshot = CreateToolhelp32Snapshot(SnapshotFlags.Module | SnapshotFlags.Module32, procIDDDDDDDDDDDDD);
  47.             MODULEENTRY32 mod = new MODULEENTRY32() { dwSize = (uint)Marshal.SizeOf(typeof(MODULEENTRY32)) };
  48.             if (!Module32First(snapshot, ref mod))
  49.                 return;
  50.  
  51.             List<string> modules = new List<string>();
  52.             do
  53.             {
  54.                 modules.Add(mod.szModule);
  55.             }
  56.             while (Module32Next(snapshot, ref mod));
  57.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement