找回密码
 加入
搜索
查看: 5516|回复: 22

读取进程内存占用

[复制链接]
发表于 2009-5-17 20:11:19 | 显示全部楼层 |阅读模式
本帖最后由 78391493 于 2009-5-18 23:04 编辑

GetProcessMemoryInfo这个API函数读取某进程的内存占用怎么写,研究了半天也不知道AU3怎么写
发表于 2009-5-17 21:23:55 | 显示全部楼层
_ProcessListProperties可以做到,不过它是用WMI实现的。
发表于 2009-5-17 21:27:33 | 显示全部楼层
_ProcessListProperties可以做到,不过它是用WMI实现的。
 楼主| 发表于 2009-5-17 23:05:36 | 显示全部楼层
顶顶  还是没搞明白  WMI感觉慢了点
 楼主| 发表于 2009-5-18 13:17:23 | 显示全部楼层
 楼主| 发表于 2009-5-18 16:19:54 | 显示全部楼层
toptoptoptop
发表于 2009-5-18 16:26:39 | 显示全部楼层
ProcessGetStats
 楼主| 发表于 2009-5-18 16:46:41 | 显示全部楼层
不是ProcessGetStats
发表于 2009-5-18 16:58:08 | 显示全部楼层
你贴出GetProcessMemoryInfo函数的原型,并说明哪里不懂。有人会帮你解答的。
 楼主| 发表于 2009-5-18 17:12:56 | 显示全部楼层
BOOL WINAPI GetProcessMemoryInfo(
  __in   HANDLE Process,
  __out  PPROCESS_MEMORY_COUNTERS ppsmemCounters,
  __in   DWORD cb
);
第二第三参数不知道什么意思。。。
发表于 2009-5-18 17:18:37 | 显示全部楼层
Re 78391493:

第一个参数是进程的句柄,可以用_WinAPI_OpenProcess返回这个句柄。
第二个参数是一个结构指针,结构定义如下:
DWORD  cb;
  DWORD  PageFaultCount;
  SIZE_T PeakWorkingSetSize;
  SIZE_T WorkingSetSize;
  SIZE_T QuotaPeakPagedPoolUsage;
  SIZE_T QuotaPagedPoolUsage;
  SIZE_T QuotaPeakNonPagedPoolUsage;
  SIZE_T QuotaNonPagedPoolUsage;
  SIZE_T PagefileUsage;
  SIZE_T PeakPagefileUsage;
其中,前面的dword和SIZE_T是成员类型,后面的cb和PageFaultCount等是成员的名字,名字无关紧要。SIZE_T对应的autoit类型是dword。可以用DllStructCreate定义这个结构并用DllStructGetPtr返回它的指针。
第3个参数是结构的大小,可以用DllStructGetSize获取到。
 楼主| 发表于 2009-5-18 17:19:54 | 显示全部楼层
奇怪 返回一直是0
 楼主| 发表于 2009-5-18 17:26:16 | 显示全部楼层
$cb = DllStructCreate("dword;dword;int;int;int;int;int;int;int;int")
$cbPtr = DllStructGetPtr($cb)
$Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', False, 'int', @AutoItPID)
$return = DllCall("psapi.dll", 'int', 'GetProcessMemoryInfo', 'long', $Handle[0], "ptr", $cbPtr, "dword", DllStructGetSize($cb))
MsgBox(0, "", $return)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $Handle[0])
改了一下,变成空白了……
发表于 2009-5-18 17:31:03 | 显示全部楼层
当然会显示空白了,DllCall返回结果存储在一个数组中,GetProcessMemoryInfo返回的结果是布尔型,看下return[0]如果是1就执行成功了。结果储存在$cb中。可以用DllStructGetData获取到。
 楼主| 发表于 2009-5-18 17:38:43 | 显示全部楼层
DllStructGetData应该怎么写?越来越晕了。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 13:22 , Processed in 0.104491 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表