Отображение количества оперативной памяти, которое занимает указанный процесс - VB

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

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

Как написать программу, которая будет показывать, сколько оперативной памяти занимает указанный процесс? Буду благодарен.)

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

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function NtQuerySystemInformation Lib "ntdll.dll" (ByVal infoClass As Long, Buffer As Any, ByVal BufferSize As Long, ret As Long) As Long
  4. Private Declare Function GetMem4 Lib "msvbvm60" (src As Any, dst As Any) As Long
  5. Private Declare Function GetMem8 Lib "msvbvm60" (src As Any, dst As Any) As Long
  6. Private Declare Sub memcpy Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  7.  
  8. Private Type UNICODE_STRING
  9.     Length      As Integer
  10.     MaxLength   As Integer
  11.     lpBuffer    As Long
  12. End Type
  13.  
  14. Private Const SystemProcessInformation      As Long = &H5&
  15. Private Const STATUS_INFO_LENGTH_MISMATCH   As Long = &HC0000004
  16. Private Const STATUS_SUCCESS                As Long = 0&
  17.  
  18.  
  19. Private Sub Form_Load()
  20.     Dim ret         As Long
  21.     Dim buf()       As Byte
  22.     Dim Offset      As Long
  23.     Dim deltaOffset As Long
  24.     Dim ImgName     As UNICODE_STRING
  25.     Dim ProcName    As String
  26.     Dim PID         As Long
  27.     Dim MemWorkSet  As Long
  28.    
  29.     If NtQuerySystemInformation(SystemProcessInformation, ByVal 0&, 0&, ret) = STATUS_INFO_LENGTH_MISMATCH Then
  30.    
  31.         ReDim buf(ret - 1)
  32.        
  33.         If NtQuerySystemInformation(SystemProcessInformation, buf(0), ret, ret) = STATUS_SUCCESS Then
  34.            
  35.             Do
  36.                 GetMem8 buf(Offset + 14 * 4), ImgName
  37.                 GetMem4 buf(Offset + 17 * 4), PID
  38.                 GetMem4 buf(Offset + 26 * 4), MemWorkSet
  39.                
  40.                 If PID = 0 Then
  41.                     ProcName = "System Idle Process"
  42.                 Else
  43.                     ProcName = Space$(ImgName.Length \ 2)
  44.                     memcpy ByVal StrPtr(ProcName), ByVal ImgName.lpBuffer, ImgName.Length
  45.                 End If
  46.                
  47.                 Debug.Print PID
  48.                 Debug.Print ProcName
  49.                 Debug.Print Format(MemWorkSet \ 1024, "0,000") & " KB."
  50.                
  51.                 GetMem4 buf(Offset), deltaOffset
  52.                 Offset = Offset + deltaOffset
  53.                
  54.             Loop While deltaOffset
  55.  
  56.         End If
  57.        
  58.     End If
  59.    
  60. End Sub

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


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

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

7   голосов , оценка 3.714 из 5

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

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

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