public IEnumerable <ModuleEntry32> GetModules(IntPtr snapshot, uint th32ProcessID = 0) { // var snapshot = IntPtr.Zero; // try // { var moduleData = new ModuleEntry32 { dwSize = (uint)Marshal.SizeOf(typeof(ModuleEntry32)) }; // snapshot = CreateToolhelp32Snapshot((uint) SnapshotFlags.All, th32ProcessID); if (!Module32First(snapshot, ref moduleData)) { yield break; } do { if (moduleData.th32ProcessID == th32ProcessID) { yield return(moduleData); } } while (Module32Next(snapshot, ref moduleData)); // } // finally // { // CloseHandle(snapshot); // } }
public static extern bool Module32Next([In] IntPtr hSnapshot, ref ModuleEntry32 lpme);