Найти процесс, который жрет больше памяти - C#

Узнай цену своей работы

Формулировка задачи:

При помощи

CreateToolhelp32Snapshot

Немогу разобраться что передавать в параметрах + методичка для obj паскаля Буду рад любой помощи, но прошу помочь кодом Пока есть вот это:
Листинг программы
  1. [DllImport("kernel32", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
  2. public static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processid);
  3. [DllImport("kernel32", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
  4. static extern bool Process32First([In]IntPtr hSnapshot, ref PROCESSENTRY32 lppe);
  5. [DllImport("kernel32", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
  6. static extern bool Process32Next([In]IntPtr hSnapshot, ref PROCESSENTRY32 lppe);
  7. IntPtr handle;
  8. static void Main(string[] args)
  9. {
  10. handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  11. Console.ReadLine();
вроде что-то записывает, но что и как с этим работать я хз(((((((((((

Решение задачи: «Найти процесс, который жрет больше памяти»

textual
Листинг программы
  1.        static void Main()
  2.     {
  3.  
  4.         long maxMemory = 0;
  5.         IntPtr handleToSnapshot = IntPtr.Zero;
  6.         string procName = string.Empty;
  7.         try
  8.         {
  9.             PROCESSENTRY32 procEntry = new PROCESSENTRY32();
  10.  
  11.             procEntry.dwSize = (UInt32)Marshal.SizeOf(typeof(PROCESSENTRY32));
  12.  
  13.             handleToSnapshot = CreateToolhelp32Snapshot((uint)SnapshotFlags.Process, 0);
  14.             if (Process32First(handleToSnapshot, ref procEntry))
  15.             {
  16.                 do
  17.                {
  18.                     Process pr = Process.GetProcessById((int)procEntry.th32ProcessID);
  19.                  //   Console.WriteLine("Proc.name: {0} physical memory usage: {1}", pr.ProcessName, pr.WorkingSet64);
  20.                     if (pr.WorkingSet64 > maxMemory)
  21.                     {
  22.                         maxMemory = pr.WorkingSet64;
  23.                         procName = pr.ProcessName;
  24.                     }
  25.  
  26.                 }while (Process32Next(handleToSnapshot, ref procEntry));
  27.  
  28.                 Console.WriteLine("Proc.name: {0}, Physical memory usage: {1}", procName, maxMemory );
  29.             }
  30.             else
  31.             {
  32.                 throw new ApplicationException(string.Format("Failed with win32 error code {0}", Marshal.GetLastWin32Error()));
  33.             }
  34.         }
  35.         catch (Exception ex)
  36.         {
  37.             Console.WriteLine(ex.Message);
  38.         }
  39.         finally
  40.         {
  41.             CloseHandle(handleToSnapshot);
  42.         }
  43.         Console.ReadKey(true);
  44.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы