Ejemplo n.º 1
0
        public static IEnumerable <ProcessEntry32> GetProcesses()
        {
            var handleToSnapshot = IntPtr.Zero;

            try
            {
                var procEntry = new ProcessEntry32 {
                    dwSize = (uint)Marshal.SizeOf(typeof(ProcessEntry32))
                };
                handleToSnapshot = Win32ApiImports.CreateToolhelp32Snapshot(SnapshotFlags.Process, 0);

                if (Win32ApiImports.Process32First(handleToSnapshot, ref procEntry))
                {
                    do
                    {
                        yield return(procEntry);
                    }while (Win32ApiImports.Process32Next(handleToSnapshot, ref procEntry));
                }
                else
                {
                    throw new ApplicationException($"Failed with win32 error code {Marshal.GetLastWin32Error()}");
                }
            }
            finally
            {
                Win32ApiImports.CloseHandle(handleToSnapshot);
            }
        }
Ejemplo n.º 2
0
 public static extern bool Process32Next([In] IntPtr hSnapshot, ref ProcessEntry32 lppe);