Получение из AutoCAD VBA значения объема памяти занимаемого процессом acad.exe
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Получение из AutoCAD VBA значения объема памяти занимаемого процессом acad.exe

Получение из AutoCAD VBA значения объема памяти занимаемого процессом acad.exe

Ответ
Поиск в этой теме
Непрочитано 27.08.2009, 00:29 #1
Получение из AutoCAD VBA значения объема памяти занимаемого процессом acad.exe
parkovaya1
 
Регистрация: 14.08.2009
Сообщений: 10

Требуется из VBA считать объем памяти занимаемой процессом acad.exe (если запустить Task Manager - столбец Память). Блуждание по MSDNу практически ничего не дало.
С виндовз API мне тяжело, поскольку занимаюсь прикладным программированием. Насколько понял нужно объявить определенную функцию через переменную Declare, но где ее искать не понял, а на MSDN описания по .NET. Там же написано что возможно использование объекта .NET в VB6, но в объекте System (из каталога Net Framework) нет требуемого Diagnostics, с помощью которого как я понял можно считать выполняемые процессы и возможно занимаемую ими память. Или нужно счетчики читать с помощью System.PerformanceCounter? Тогда как определить нужный счетчик?
Просмотров: 3657
 
Непрочитано 27.08.2009, 01:06
#2
VoVoRoNaLe

Конструктор
 
Регистрация: 29.10.2007
Сообщений: 157


WinApi
GetProcessMemoryInfo

Retrieves information about the memory usage of the specified process.
BOOL WINAPI GetProcessMemoryInfo(
HANDLE Process,
PPROCESS_MEMORY_COUNTERS ppsmemCounters,
DWORD cb);
Parameters
Process
[in] Handle to the process. The handle must have the PROCESS_QUERY_INFORMATION and PROCESS_VM_READ access rights. For more information, see Process Security and Access Rights.
ppsmemCounters
[out] Pointer to the PROCESS_MEMORY_COUNTERS or PROCESS_MEMORY_COUNTERS_EX structure that receives information about the memory usage of the process.
cb
[in] Size of the ppsmemCounters structure, in bytes.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
VoVoRoNaLe вне форума  
 
Автор темы   Непрочитано 27.08.2009, 03:47
#3
parkovaya1


 
Регистрация: 14.08.2009
Сообщений: 10


Цитата:
Сообщение от VoVoRoNaLe Посмотреть сообщение
WinApi
GetProcessMemoryInfo

Retrieves information about the memory usage of the specified process.
BOOL WINAPI GetProcessMemoryInfo(
HANDLE Process,
PPROCESS_MEMORY_COUNTERS ppsmemCounters,
DWORD cb);
Parameters
Process
[in] Handle to the process. The handle must have the PROCESS_QUERY_INFORMATION and PROCESS_VM_READ access rights. For more information, see Process Security and Access Rights.
ppsmemCounters
[out] Pointer to the PROCESS_MEMORY_COUNTERS or PROCESS_MEMORY_COUNTERS_EX structure that receives information about the memory usage of the process.
cb
[in] Size of the ppsmemCounters structure, in bytes.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
спасибо, но нашел уже практическое решение. для несильных в winAPI по одному MSDNу писать тяжело
вот кот (работает непосредственно из VBA в Acad2007 на платформе win7x64)

Код:
[Выделить все]
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

private Declare Function GetCurrentProcess Lib "kernel32" () as Long
private Declare Function GetProcessMemoryInfo Lib "psapi.dll" (byval lHandle as Long, lpStructure as PROCESS_MEMORY_COUNTERS, byval lSize as Long) as Integer




and in your function:


    Dim lngReturn as Long
    Dim typMem as PROCESS_MEMORY_COUNTERS
    
    lngReturn = GetProcessMemoryInfo(GetCurrentProcess(), typMem, len(typMem))
    Debug.print CStr(typMem.WorkingSetSize)
ссылка на источник: http://www.codeguru.com/forum/showthread.php?t=21093
parkovaya1 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Получение из AutoCAD VBA значения объема памяти занимаемого процессом acad.exe



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение площади поверхности и объема тел в AutoCAD на VBA. shumilovvv Программирование 23 21.07.2014 14:44