Страница: 1 |
Страница: 1 |
Вопрос: свободная физическая память и ресурсы
Добавлено: 11.07.04 00:24
Автор вопроса: Chan | Web-сайт:
Как определить количество свободной физической памяти и ресурсов, как это делается например в окошке about блокнота?
Предполагаю, что тема уже обсуждалась, но я найти не смог. Так что можно кинуть в меня ссылкой.
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 11.07.04 01:51
Используй GlobalMemoryStatus...
Ну а вот пример класса:
Private 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
Private Declare Sub GlobalMemoryStatus Lib "kernel32" _
 lpBuffer As MEMORYSTATUS)
Private mmemMemoryStatus As MEMORYSTATUS
Public Property Get FreeMemory() As Long
FreeMemory = mmemMemoryStatus.dwAvailPhys
End Property
Public Property Get TotalMemory() As Long
TotalMemory = mmemMemoryStatus.dwTotalPhys
End Property
Public Property Get TotalVirtualMemory() As Long
TotalVirtualMemory = mmemMemoryStatus.dwTotalVirtual
End Property
Public Property Get AvailableVirtualMemory() As Long
AvailableVirtualMemory = mmemMemoryStatus.dwAvailVirtual
End Property
Private Sub Class_Initialize()
mmemMemoryStatus.dwLength = Len(mmemMemoryStatus)
GlobalMemoryStatus mmemMemoryStatus
End Sub
Public Sub Refresh()
GlobalMemoryStatus mmemMemoryStatus
End Sub
Номер ответа: 2
Автор ответа:
Chan
ICQ: 26977559
Вопросов: 3
Ответов: 14
Web-сайт:
Профиль | | #2
Добавлено: 11.07.04 12:37
А что такое "системные ресурсы" и как их определить (см. about notepad'а)?
Номер ответа: 3
Автор ответа:
Chan
ICQ: 26977559
Вопросов: 3
Ответов: 14
Web-сайт:
Профиль | | #3
Добавлено: 11.07.04 12:39
Кстати, твой пример, помоему, только для 9x, для NT'ей там другой код?
Номер ответа: 4
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #4
Добавлено: 14.07.04 16:49
Кажется тебе это надо...
Private 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
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
Private Sub GetMemory()
Dim MemStat As MEMORYSTATUS
GlobalMemoryStatus MemStat
LabelMemory.Caption = "Доступная физическая память: " & Format(MemStat.dwTotalPhys / 1024, "### ### ##0" & " КБ"
End Sub
Номер ответа: 5
Автор ответа:
Chan
ICQ: 26977559
Вопросов: 3
Ответов: 14
Web-сайт:
Профиль | | #5
Добавлено: 14.07.04 22:00
2Andr: Кажется мне это уже советовали. Не так ли?
Номер ответа: 6
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #6
Добавлено: 15.07.04 19:51
Но это именно то что ты ищешь....
Номер ответа: 7
Автор ответа:
Чан
ICQ: 26977559
Вопросов: 4
Ответов: 18
Профиль | | #7
Добавлено: 17.07.04 17:43
Но это мне уже советовали...
Меня теперь больше интересует, что такое есть "свободные системные ресурсы" и как их определить.
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 17.07.04 19:16
свободно, это то что не занято
определить, как показано выше
Вопрос на вопрос, а что ты имел ввиду когда спрашивал !?
Номер ответа: 9
Автор ответа:
Чан
ICQ: 26977559
Вопросов: 4
Ответов: 18
Профиль | | #9
Добавлено: 18.07.04 02:15
Я свпрашивал "как определить количество свободной физической памяти И ресурсов". Ключевое слово "И" . Откорой блокнот->About. С памятью понятно. А вот что есть такое ресурсы?
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 18.07.04 02:26
Никаких ресурсов я там не нашел, только доступную физ. память... а раз хочется больше, бери и ищи информацию по NTQuerySystemInformation... Там тебе все расскажет... только искать прийдется тщательно...
Номер ответа: 11
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #11
Добавлено: 18.07.04 04:06
Есть у меня старенький пример. Ещё на VB3.
Там используется функция GetFreeSystemResources.
Залез в MSDN и там нашёл 32-битный эквивалент.
The following table provides a list of 16-bit Windows API elements that are not necessary or were superseded in the Win32 API.
GetFreeSystemResources Replaced by the GlobalMemoryStatus function.
Если нет MSDN, то вот тебе сразу объявления
GlobalMemoryStatus
The GlobalMemoryStatus function obtains information about the computer system's current usage of both physical and virtual memory.
VOID GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer // pointer to the memory status structure
);
Parameters
lpBuffer
Pointer to a MEMORYSTATUS structure. The GlobalMemoryStatus function stores information about current memory availability into this structure.
Return Values
This function does not return a value.
typedef struct _MEMORYSTATUS { // mst
 WORD dwLength; // sizeof(MEMORYSTATUS)
 WORD dwMemoryLoad; // percent of memory in use
 WORD dwTotalPhys; // bytes of physical memory
 WORD dwAvailPhys; // free physical memory bytes
 WORD dwTotalPageFile; // bytes of paging file
 WORD dwAvailPageFile; // free bytes of paging file
 WORD dwTotalVirtual; // user bytes of address space
 WORD dwAvailVirtual; // free user bytes
} MEMORYSTATUS, *LPMEMORYSTATUS;
dwLength
The size in bytes of the MEMORYSTATUS data structure. You do not need to set this member before calling the GlobalMemoryStatus function; the function sets it.
dwMemoryLoad
Specifies a number between 0 and 100 that gives a general idea of current memory utilization, in which 0 indicates no memory use and 100 indicates full memory use.
dwTotalPhys
Indicates the total number of bytes of physical memory.
dwAvailPhys
Indicates the number of bytes of physical memory available.
dwTotalPageFile
Indicates the total number of bytes that can be stored in the paging file. Note that this number does not represent the actual physical size of the paging file on disk.
dwAvailPageFile
Indicates the number of bytes available in the paging file.
dwTotalVirtual
Indicates the total number of bytes that can be described in the user mode portion of the virtual address space of the calling process.
dwAvailVirtual
Indicates the number of bytes of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process.
Номер ответа: 12
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #12
Добавлено: 18.07.04 04:08
Хотя тебе уже Barsik ответил.
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 18.07.04 11:31
вот уже три раза кинули одно и то же ))
Номер ответа: 14
Автор ответа:
Чан
ICQ: 26977559
Вопросов: 4
Ответов: 18
Профиль | | #14
Добавлено: 18.07.04 16:21
Хочу сделать вот так: http://chan-dzu.chat.ru/notepad.gif (скриншот из родного нотпада)
Номер ответа: 15
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #15
Добавлено: 18.07.04 17:27
Из общей памяти вычти занятую