public override HandleResponse Process()
        {
            if (!this.initialized)
            {
                throw new Exceptions.CommandNotInitializedException();
            }
            IntPtr handle = ToolHelp.CreateToolhelp32Snapshot(this.SnapshotFlags, this.ProcessID);

            return(new HandleResponse(handle));
        }
        public static MODULEENTRY32[] GetRunningModulesOfProcess(int processId)
        {
            List <MODULEENTRY32> entries = new List <MODULEENTRY32>();

            using (var h = ToolHelp.CreateToolhelp32Snapshot(ToolHelpFlags.TH32CS_SNAPMODULE, processId))
            {
                if (h.IsInvalid)
                {
                    var code = Marshal.GetLastWin32Error();
                }
                MODULEENTRY32 entry = new MODULEENTRY32()
                {
                    dwSize = (uint)Marshal.SizeOf(typeof(MODULEENTRY32))
                };

                var s = ToolHelp.Module32First(h, ref entry);

                if (!s)
                {
                    var code = Marshal.GetLastWin32Error();
                    Console.WriteLine(code);
                }

                bool f = true;
                while (f)
                {
                    var st   = ToolHelp.Module32Next(h, ref entry);
                    var code = Marshal.GetLastWin32Error();
                    if (code == 18)
                    {
                        f = false;
                    }

                    Console.WriteLine(entry.szExePath);
                }
            }
            return(entries.ToArray());
        }
        //Create integration test that defines current process count
        public static uint[] GetRunningProcessIDsSnapshot()
        {
            List <uint> processes    = new List <uint>();
            int         processCount = 0;

            using (var toolhelpHandler = ToolHelp.CreateToolhelp32Snapshot(ToolHelpFlags.TH32CS_SNAPPROCESS | ToolHelpFlags.TH32CS_SNAPNOHEAPS, 0))
            {
                ProcessEntry32 processEntry32 = new ProcessEntry32
                {
                    dwSize = (uint)Marshal.SizeOf(typeof(ProcessEntry32))
                };

                var success = ToolHelp.Process32First(toolhelpHandler, ref processEntry32);
                if (success)
                {
                    //catch code there
                }
                Console.WriteLine("Error" + Marshal.GetLastWin32Error());
                while (ToolHelp.Process32Next(toolhelpHandler, ref processEntry32))
                {
                    processes.Add(processEntry32.th32ProcessID);
                    processCount++;
                    //Console.WriteLine("Process id: " + processEntry32.th32ProcessID + " Process Name: " + processEntry32.szExeFile);
                }

                Console.WriteLine("Process count: " + processCount);
            }

            return(processes.ToArray());
        }