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; } }