С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327

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

22.03.2013, 00:05. Показов 3751. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как написать программу, которая будет показывать, сколько оперативной памяти занимает указанный процесс?
Буду благодарен.)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2013, 00:05
Ответы с готовыми решениями:

БД занимает много оперативной памяти
Здравствуйте. Установил оракл. После включения ПК, сразу же примерно 4+ ГБ забрала вот эта вот штука oracle rdbms kernel executable. Как...

Сколько оперативной памяти занимает приложение?
Как определить в c++ сколько оперативной памяти занимает приложение?

Полностью загруженная система занимает ~3.8 GB оперативной памяти
Полностью загруженная система (включая программы автозапуска) занимает ~3.8GB оперативной памяти (данные Process Hacker и стандартного Task...

12
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.03.2013, 06:40
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от arsen1101995 Посмотреть сообщение
сколько оперативной памяти занимает указанный процесс?
Код формы
Visual Basic
1
2
3
4
5
6
7
8
9
'На форме Text1, Command1
Private Sub Form_Load()
        Command1.Caption = "Working Size"
        Text1.Text = "explorer.exe"
End Sub
 
Private Sub Command1_Click()
MsgBox GetProcesses(Text1.Text)
End Sub

Код модуля
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
Public Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hProcess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Public Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Public Declare Function EnumProcesses Lib "PSAPI.DLL" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Public Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Public Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Public Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
 
 
 
Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const MAX_PATH = 260
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const TH32CS_SNAPPROCESS = &H2&
Public Const hNull = 0
Public Const WIN95_System_Found = 1
Public Const WINNT_System_Found = 2
Public Const Default_Log_Size = 10000000
Public Const Default_Log_Days = 0
Public Const SPECIFIC_RIGHTS_ALL = &HFFFF
Public Const STANDARD_RIGHTS_ALL = &H1F0000
 
 
Type MEMORYSTATUS
    dwLength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
End Type
 
 
Type PROCESS_MEMORY_COUNTERS
    cb As Long
    PageFaultCount As Long
    PeakWorkingSetSize As Long
    WorkingSetSize As Long
    QuotaPeakPagedPoolUsage As Long
    QuotaPagedPoolUsage As Long
    QuotaPeakNonPagedPoolUsage As Long
    QuotaNonPagedPoolUsage As Long
    PagefileUsage As Long
    PeakPagefileUsage As Long
End Type
 
 
Public Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long ' This process
    th32DefaultHeapID As Long
    th32ModuleID As Long ' Associated exe
    cntThreads As Long
    th32ParentProcessID As Long ' This process's parent process
    pcPriClassBase As Long ' Base priority of process threads
    dwFlags As Long
    szExeFile As String * 260 ' MAX_PATH
    End Type
 
 
Public Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long '1 = Windows 95.
    '2 = Windows NT
    szCSDVersion As String * 128
End Type
 
 
Public Function GetProcesses(ByVal EXEName As String) As String
 
    Dim booResult As Boolean
    Dim lngLength As Long
    Dim lngProcessID As Long
    Dim strProcessName As String
    Dim lngSnapHwnd As Long
    Dim udtProcEntry As PROCESSENTRY32
    Dim lngCBSize As Long 'Specifies the size, In bytes, of the lpidProcess array
    Dim lngCBSizeReturned As Long 'Receives the number of bytes returned
    Dim lngNumElements As Long
    Dim lngProcessIDs() As Long
    Dim lngCBSize2 As Long
    Dim lngModules(1 To 200) As Long
    Dim lngReturn As Long
    Dim strModuleName As String
    Dim lngSize As Long
    Dim lngHwndProcess As Long
    Dim lngLoop As Long
    Dim b As Long
    Dim c As Long
    Dim e As Long
    Dim d As Long
    Dim pmc As PROCESS_MEMORY_COUNTERS
    Dim lret As Long
    Dim strProcName2 As String
    Dim strProcName As String
 
    'Turn on Error handler
    On Error GoTo Error_handler
 
   booResult = False
 
    EXEName = UCase$(Trim$(EXEName))
    lngLength = Len(EXEName)
 
    'ProcessInfo.bolRunning = False
 
    Select Case getVersion()
        'I'm not bothered about windows 95/98 becasue this class probably wont be used on it anyway.
        Case WIN95_System_Found 'Windows 95/98
 
        Case WINNT_System_Found 'Windows NT
 
            lngCBSize = 8 ' Really needs To be 16, but Loop will increment prior to calling API
            lngCBSizeReturned = 96
 
            Do While lngCBSize <= lngCBSizeReturned
                DoEvents
                'Increment Size
                lngCBSize = lngCBSize * 2
                'Allocate Memory for Array
                ReDim lngProcessIDs(lngCBSize / 4) As Long
                'Get Process ID's
                lngReturn = EnumProcesses(lngProcessIDs(1), lngCBSize, lngCBSizeReturned)
            Loop
 
            'Count number of processes returned
            lngNumElements = lngCBSizeReturned / 4
            'Loop thru each process
 
            For lngLoop = 1 To lngNumElements
            DoEvents
 
            'Get a handle to the Process and Open
            lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lngProcessIDs(lngLoop))
 
            If lngHwndProcess <> 0 Then
                'Get an array of the module handles for the specified process
                lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)
 
                'If the Module Array is retrieved, Get the ModuleFileName
                If lngReturn <> 0 Then
 
                    'Buffer with spaces first to allocate memory for byte array
                    strModuleName = Space(MAX_PATH)
 
                    'Must be set prior to calling API
                    lngSize = 500
 
                    'Get Process Name
                    lngReturn = GetModuleFileNameExA(lngHwndProcess, lngModules(1), strModuleName, lngSize)
 
                    'Remove trailing spaces
                    strProcessName = Left(strModuleName, lngReturn)
 
                    'Check for Matching Upper case result
                    strProcessName = UCase$(Trim$(strProcessName))
 
                    strProcName2 = GetElement(Trim(Replace(strProcessName, Chr$(0), "")), "\", 0, 0, GetNumElements(Trim(Replace(strProcessName, Chr$(0), "")), "\") - 1)
 
                    If strProcName2 = EXEName Then
 
                        'Get the Site of the Memory Structure
                        pmc.cb = LenB(pmc)
 
                           lret = GetProcessMemoryInfo(lngHwndProcess, pmc, pmc.cb)
                             GetProcesses = EXEName & "::" & CStr(pmc.WorkingSetSize / 1024)
                    End If
                End If
            End If
            'Close the handle to this process
            lngReturn = CloseHandle(lngHwndProcess)
            DoEvents
        Next
 
    End Select
 
IsProcessRunning_Exit:
 
'Exit early to avoid error handler
Exit Function
Error_handler:
    Err.Raise Err, Err.Source, "ProcessInfo", Error
    Resume Next
End Function
 
 
Private Function getVersion() As Long
 
    Dim osinfo As OSVERSIONINFO
    Dim retvalue As Integer
 
    osinfo.dwOSVersionInfoSize = 148
    osinfo.szCSDVersion = Space$(128)
    retvalue = GetVersionExA(osinfo)
    getVersion = osinfo.dwPlatformId
 
End Function
 
 
Private Function StrZToStr(s As String) As String
    StrZToStr = Left$(s, Len(s) - 1)
End Function
 
 
 
Public Function GetElement(ByVal strList As String, ByVal strDelimiter As String, ByVal lngNumColumns As Long, ByVal lngRow As Long, ByVal lngColumn As Long) As String
 
    Dim lngCounter As Long
 
    ' Append delimiter text to the end of the list as a terminator.
    strList = strList & strDelimiter
 
    ' Calculate the offset for the item required based on the number of columns the list
    ' 'strList' has i.e. 'lngNumColumns' and from which row the element is to be
    ' selected i.e. 'lngRow'.
    lngColumn = IIf(lngRow = 0, lngColumn, (lngRow * lngNumColumns) + lngColumn)
 
    ' Search for the 'lngColumn' item from the list 'strList'.
    For lngCounter = 0 To lngColumn - 1
 
        ' Remove each item from the list.
        strList = Mid$(strList, InStr(strList, strDelimiter) + Len(strDelimiter), Len(strList))
 
        ' If list becomes empty before 'lngColumn' is found then just
        ' return an empty string.
        If Len(strList) = 0 Then
            GetElement = ""
            Exit Function
        End If
 
    Next lngCounter
    ' Return the sought list element.
    GetElement = Left$(strList, InStr(strList, strDelimiter) - 1)
End Function
 
Public Function GetNumElements(ByVal strList As String, ByVal strDelimiter As String) As Integer
    Dim intElementCount As Integer
    ' If no elements in the list 'strList' then just return 0.
    If Len(strList) = 0 Then
        GetNumElements = 0
        Exit Function
    End If
    ' Append delimiter text to the end of the list as a terminator.
    strList = strList & strDelimiter
    ' Count the number of elements in 'strlist'
    While InStr(strList, strDelimiter) > 0
        intElementCount = intElementCount + 1
        strList = Mid$(strList, InStr(strList, strDelimiter) + 1, Len(strList))
    Wend
    ' Return the number of elements in 'strList'.
    GetNumElements = intElementCount
End Function
P.S. Написано по мотивам API-Guide
8
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
22.03.2013, 12:08  [ТС]
А как можно изменить это на тот процесс, который тебе нужен?

Добавлено через 4 минуты
Я уже понял, спасибо большое.)

Добавлено через 31 минуту
А как мне вывести результат в Label, а не в MsgBox??
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.03.2013, 13:19
Цитата Сообщение от arsen1101995 Посмотреть сообщение
вывести результат в Label,

Visual Basic
1
2
3
Private Sub Command1_Click()
Label1 = GetProcesses(Text1.Text)
End Sub
Если название процесса не надо, а только значение, то измени в модуле эту строчку
Visual Basic
1
GetProcesses = " " & CStr(pmc.WorkingSetSize / 1024)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.03.2013, 04:05
Мда, на Windows 7 для 70% процессов EnumProcessModules выдает ERROR_PARTIAL_COPY с пустым буфером.

Ой, что-то там кучу всего лишнего: GlobalMemoryStatus, SetTimer, KillTimer, Process32First, Process32Next, CreateToolhelp32Snapshot. GetVersionExA зачем вообще не понятно. Функции GetNumElements и GetElement писались наверно еще во времена VB5, можно одной строкой заменить. Получили память и Exit Do бы сразу.

Вообще не нравятся мне такие методы, чтобы узнать сколько памяти у конкретно известной программы, открывать все процессы каждой из запущенных...
... Это как, если Вам нужно найти путь в открытую дверь, а Вы бьете ногами по каждой и спрашиваете "А здесь живет Вася?" Но так получилось, что в Windows 7 Вася говорить не умеет.

CreateToolhelp32Snapshot

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Option Explicit
 
Private Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hProcess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
 
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
 
Const MAX_PATH As Integer = 260
 
Const PROCESS_QUERY_INFORMATION = 1024
Const PROCESS_VM_READ = 16
 
Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
End Type
 
Private Type PROCESS_MEMORY_COUNTERS
    cb As Long
    PageFaultCount As Long
    PeakWorkingSetSize As Long
    WorkingSetSize As Long
    QuotaPeakPagedPoolUsage As Long
    QuotaPagedPoolUsage As Long
    QuotaPeakNonPagedPoolUsage As Long
    QuotaNonPagedPoolUsage As Long
    PagefileUsage As Long
    PeakPagefileUsage As Long
End Type
 
Public Function Get_Memory_Info_API(ProcessNameCheck$) As Long
    Dim hSnapShot&, p&, hProc&, ProcessName$, ret&, rSuccess&
    Dim uProcess As PROCESSENTRY32
    Dim pmc As PROCESS_MEMORY_COUNTERS
 
    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
    uProcess.dwSize = Len(uProcess)
    p = Process32First(hSnapShot, uProcess)
 
    Do While p
        ProcessName = Left$(uProcess.szExeFile, IIf(InStr(uProcess.szExeFile, Chr$(0)) > 0, InStr(uProcess.szExeFile, Chr$(0)) - 1, 0))
        
        If StrComp(ProcessName, ProcessNameCheck, vbTextCompare) = 0 Then
 
            hProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, False, uProcess.th32ProcessID)
            If hProc <> 0 Then
                pmc.cb = Len(pmc)
                ret = GetProcessMemoryInfo(hProc, pmc, pmc.cb)
                CloseHandle hProc
            End If
            
            Exit Do
        End If
        
        p = Process32Next(hSnapShot, uProcess)
    Loop
    
    rSuccess = Err.LastDllError
    If rSuccess = 0 Then
        Get_Memory_Info_API = pmc.WorkingSetSize \ 1024
      Else
        Debug.Print rSuccess
    End If
End Function


Только вот, например, антивирусы защищаются от такого рода доступа.
В этом плане наиболее мне нравится ядреная функция NtQuerySystemInformation, которая лишена этого недостатка: https://www.cyberforum.ru/blogs/34326/blog244.html
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.03.2013, 06:49
Цитата Сообщение от Dragokas Посмотреть сообщение
писались наверно еще во времена VB5,
Да,оригинальный пример был написан в режиме совместимости с vb4-vb5 и начинался так
'Remark: If you're using VB4 or VB5,

И вообще называется Enumerate Processes, а потому и перечислено всё.
Но кто в теме, тому главное идея, всегда можно убрать лишнее. Плохо когда чего то не хватает, ка в случае с win7
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 4
15.04.2015, 14:34
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Код формы
P.S. Написано по мотивам API-Guide
Привет, то код хорошо работает, но он показывает объем использованной памяти только тех процессов, которые запустил пользователь, а процессы типа SYSTEM или LOCAL SERVICE, программа не показывает, подскажите пожалуйста, как можно исправить эту проблему ...
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 4
17.04.2015, 10:00
Как сделать, чтобы программа отображала полностью все процессы, а не только те, что запустил пользователь?
0
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
17.04.2015, 11:08
 Комментарий администратора 
Ace Turbo, на данном форуме посты можно размещать только на двух языках: русском и английском.


Это последнее предупреждение.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.04.2015, 16:39
Лучший ответ Сообщение было отмечено The trick как решение

Решение

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

Добавлено через 25 минут
Я поместил этот код на форму , и ничего не дало , программа дальше не видит процессов , которые запущены системой (
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.04.2015, 21:17
Цитата Сообщение от Ace Turbo Посмотреть сообщение
может им нужно заменить полностью весь предыдущее предложен ?
Естественно.
Цитата Сообщение от Ace Turbo Посмотреть сообщение
Я поместил этот код на форму , и ничего не дало , программа дальше не видит процессов , которые запущены системой (
Не может такого быть.
У меня запущенный в UserMode один в один список совпадает с диспетчером задач, запущенным в режиме повышенных привилегий.
Какая версия ОС ? С чем сравниваете список? Свой старый код точно удалили? Выложите архив с проектом.
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 4
21.04.2015, 08:06
Цитата Сообщение от Dragokas Посмотреть сообщение
Естественно.

Не может такого быть.
У меня запущенный в UserMode один в один список совпадает с диспетчером задач, запущенным в режиме повышенных привилегий.
Какая версия ОС ? С чем сравниваете список? Свой старый код точно удалили? Выложите архив с проектом.
Я раскрою суть зачем мне такая программа , на работе ко мне часто пидлючаються , и хотел этой программе вычислить когда растет количество использованной оперативной памяти в процессе Radmin , а этот процесс запущен системой , и я е могу его побичиты , мне не нужны все процессы диспечера задач , а лишь один конкретный процесс , к сожалению сейчас не могу выбросить архив со своей программой , потому что на работе , а вечером обязательно брошу .
Благодарю за помощь в любом случае .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2015, 08:06
Помогаю со студенческими работами здесь

Узнать, какой объём оперативной памяти занимает приложение
Можно ли каким-нибудь кодом узнать какой объём оперативной памяти занимает приложение/класс? Сколько требует процессорного времени. Всё...

Webbrowser при обновлении страницы занимает больше оперативной памяти
Имеется форма VCL, на ней кнопка и браузер, после каждого просмотра видео память увеличивается на 10-15 мб, у кого какие есть идеи на этот...

Как узнать, какой процесс занимает много памяти?
на хостинге есть сайт ! какой то скрипт кушает очень много памяти и забивает ей спустя 2 часа и сайт ложится ! реально ли как то через...

Увеличение количества оперативной памяти
Приобрёл материнскую плату MSI G41M-P33 Combo. Она имеет разъёмы DDR2 и DDR3 (выдержку из мануала приложил). У меня уже стоят две планки...

Неотображаемый процесс ест примерно полтора гигабайта оперативной памяти
Доброго времени суток. На днях решил подсчитать и обнаружил что все процессы отображаемые в диспетчере задач (с пунктом отображать процессы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru