コード例 #1
0
        public static Process GetParent(this Process process)
        {
            var parentPid = 0;
            var hnd       = Kernel32.CreateToolhelp32Snapshot(Kernel32.Th32CsSnapprocess, 0);

            if (hnd == IntPtr.Zero)
            {
                return(null);
            }

            var processInfo = new Kernel32.Processentry32 {
                dwSize = (uint)Marshal.SizeOf(typeof(Kernel32.Processentry32))
            };

            if (Kernel32.Process32First(hnd, ref processInfo) == false)
            {
                return(null);
            }

            do
            {
                if (process.Id == processInfo.th32ProcessID)
                {
                    parentPid = (int)processInfo.th32ParentProcessID;
                }
            }while (parentPid == 0 && Kernel32.Process32Next(hnd, ref processInfo));

            return(parentPid > 0 ? Process.GetProcessById(parentPid) : null);
        }
コード例 #2
0
        public static Process GetParent(this Process process)
        {
            var parentPid = 0;
            var hnd = Kernel32.CreateToolhelp32Snapshot(Kernel32.Th32CsSnapprocess, 0);

            if (hnd == IntPtr.Zero) return null;

            var processInfo = new Kernel32.Processentry32 { dwSize = (uint)Marshal.SizeOf(typeof(Kernel32.Processentry32)) };

            if (Kernel32.Process32First(hnd, ref processInfo) == false) return null;

            do
            {
                if (process.Id == processInfo.th32ProcessID)
                    parentPid = (int)processInfo.th32ParentProcessID;
            }
            while (parentPid == 0 && Kernel32.Process32Next(hnd, ref processInfo));

            return parentPid > 0 ? Process.GetProcessById(parentPid) : null;
        }