HemersonKl Ответов: 1

C# pid в процессе с тем же именем, который использует больше памяти


Hello friends, I need some help. I'm doing Pid in a flashplayerPlugin process, but I have a problem are two processes with same name. And I need the PID to be in the process that is using more memory. The process that will be using more memory is what I want. How can I do this?


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace Trainer_C3
{
    class GetBrowser
    {

        [DllImport("kernel32.dll", SetLastError = true)]
        static public extern bool CloseHandle(IntPtr hHandle);

        [DllImport("kernel32.dll")]
        static public extern bool Module32First(IntPtr hSnapshot, ref MODULEENTRY32 lpme);

        [DllImport("kernel32.dll")]
        static public extern bool Module32Next(IntPtr hSnapshot, ref MODULEENTRY32 lpme);

        [DllImport("kernel32.dll", SetLastError = true)]
        static public extern IntPtr CreateToolhelp32Snapshot(SnapshotFlags dwFlags, uint th32ProcessID);

        public const short INVALID_HANDLE_VALUE = -1;

        [Flags]
        public enum SnapshotFlags : uint
        {
            HeapList = 0x00000001,
            Process = 0x00000002,
            Thread = 0x00000004,
            Module = 0x00000008,
            Module32 = 0x00000010,
            Inherit = 0x80000000,
            All = 0x0000001F
        }

        [StructLayoutAttribute(LayoutKind.Sequential)]
        public struct MODULEENTRY32
        {
            public uint dwSize;
            public uint th32ModuleID;
            public uint th32ProcessID;
            public uint GlblcntUsage;
            public uint ProccntUsage;
            IntPtr modBaseAddr;
            public uint modBaseSize;
            IntPtr hModule;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
            public string szModule;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
            public string szExePath;
        };

        static List<string> EnumProcessModules(uint procIDDDDDDDDDDDDD)
        {
            List<string> modules = new List<string>();

            var snapshot = CreateToolhelp32Snapshot(SnapshotFlags.Module | SnapshotFlags.Module32, procIDDDDDDDDDDDDD);
            MODULEENTRY32 mod = new MODULEENTRY32() { dwSize = (uint)Marshal.SizeOf(typeof(MODULEENTRY32)) };
            if (!Module32First(snapshot, ref mod))
                return modules;

            do
            {
                //     Console.WriteLine(mod.szModule);
                modules.Add(mod.szModule);
            }
            while (Module32Next(snapshot, ref mod));
            return modules;
        }

        public int Chrome()
        {
            Process[] chrome = Process.GetProcessesByName("chrome");
            foreach (Process subchrome in chrome)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //         Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;
        }
        public int Firefox_Flash()
        {
            Process[] chrome = Process.GetProcesses();
            int id = 0;
            foreach (Process subchrome in chrome)
            {

                if (subchrome.ProcessName.Contains("FlashPlayerPlugin"))
                {
                    id = subchrome.Id;

                }
            }
            return id;

        }

        public int Edge_Flash()
        {
            Process[] chrome = Process.GetProcesses();
            int id = 0;
            foreach (Process subchrome in chrome)
            {
                if (subchrome.ProcessName.Contains("MicrosoftEdgeCP"))
                {
                    List<string> modules = EnumProcessModules((uint)subchrome.Id);
                    foreach (string submodule in modules)
                    {
                        //Console.WriteLine(submodule);
                        if (submodule.Contains("Flash"))
                        {
                            //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                            return subchrome.Id;

                        }
                    }
                }
            }
            return id;
        }
        public int Opera()
        {
            Process[] chrome = Process.GetProcessesByName("opera");
            foreach (Process subchrome in chrome)
            {

                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //    Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }

                }
            }
            return 0;
        }
        public int Firefox_Unity()
        {
            try
            {
                Process chrome = Process.GetProcessesByName("plugin-container")[0];
                return chrome.Id;
            }
            catch
            {
                return 0;
            }
        }
        public int Gameroom_Flash()
        {
            Process[] chrome = Process.GetProcessesByName("Facebook Gameroom Browser");
            foreach (Process subchrome in chrome)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //         Console.WriteLine(submodule);
                    if (submodule.Contains("fenix"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;

        }

        public int Mustang()
        {
            Process[] mustang = Process.GetProcessesByName("mustang");
            foreach (Process subchrome in mustang)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //         Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;
        }

        public int Psafe()
        {
            Process[] PSafeInternet = Process.GetProcessesByName("PSafeInternet");
            foreach (Process subchrome in PSafeInternet)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //  Console.WriteLine(submodule);
                    if (submodule.Contains("NPSWF"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;
        }

        public int Maxthon()
        {
            Process[] Maxthon = Process.GetProcessesByName("Maxthon");
            foreach (Process subchrome in Maxthon)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
                    //  Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;
        }

    }
}




<pre lang="c#"><pre>  private void button3_Click_1(object sender, EventArgs e)
        {
     pid = browser.Firefox_Flash();
    if (pid > 0)
{
 Aobscan.OpenProcessid(pid);
label1.Text = "Firefox_Flash = PID " + pid + "--" + BIT64.Text;
 System.Media.SystemSounds.Beep.Play();
}
else
{
pid = browser.Opera();
 
if (pid > 0)
{
Aobscan.OpenProcessid(pid);
label1.Text = "Opera = PID " + pid + "--" + BIT64.Text;
}
}

1 Ответов

Рейтинг:
0

RickZeeland

Что-то вроде этого:

Process myProcess = Process.GetProcessById(pid);
long memoryUsed = myProcess.WorkingSet64;
Пример для вашего класса GetBrowser:
Process[] chrome = Process.GetProcessesByName("chrome");
foreach (Process subchrome in chrome)
{
  long memoryUsed = subchrome.WorkingSet64;
  ...


HemersonKl

Привет, спасибо. Но... Как я это использую ? Мой класс Getbrowser не имеет Pid,Pid - это класс im form. Я-апрентис. Извините за мой английский.

HemersonKl

Привет. Большое вам спасибо за ответ. Но дайте-ка мне ошибку, я пытался это сделать, но так ничего и не нашел = /

public int Firefox_Flash()
{
Process [] chrome = процесс.GetProcessesByName ("FlashPlayerPlugin");
foreach (процесс субхрома в хроме)
{
long memoryUsed = субхром.WorkingSet64;
List & lt;string & gt; modules = EnumProcessModules ((uint)subchrome.Id);
по каждому элементу (строка подмодули модулей)
{

if (подмодуль.Содержит("Проблем"))
{


вернуться subchrome.Идентификатор;

}
}
}
возвращает 0;
}

HemersonKl

Может быть, я не очень хорошо объяснил. FlashPlayerPlugin_25_0_0_127.exe это процесс, который всегда существует 2. Мне нужно сделать pid в одном из двух, но в том, который использует больше памяти. У него нет подмодуля.

HemersonKl

Кто-нибудь? =/