예제 #1
0
        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);
//            }
        }
예제 #2
0
 public static extern bool Module32Next([In] IntPtr hSnapshot, ref ModuleEntry32 lpme);