78391493 发表于 2009-5-17 20:11:19

读取进程内存占用

本帖最后由 78391493 于 2009-5-18 23:04 编辑

GetProcessMemoryInfo这个API函数读取某进程的内存占用怎么写,研究了半天也不知道AU3怎么写:face (30):

sensel 发表于 2009-5-17 21:23:55

_ProcessListProperties可以做到,不过它是用WMI实现的。

sensel 发表于 2009-5-17 21:27:33

_ProcessListProperties可以做到,不过它是用WMI实现的。

78391493 发表于 2009-5-17 23:05:36

顶顶还是没搞明白WMI感觉慢了点

78391493 发表于 2009-5-18 13:17:23

:face (34):

78391493 发表于 2009-5-18 16:19:54

toptoptoptop

pusofalse 发表于 2009-5-18 16:26:39

ProcessGetStats

78391493 发表于 2009-5-18 16:46:41

不是ProcessGetStats

pusofalse 发表于 2009-5-18 16:58:08

你贴出GetProcessMemoryInfo函数的原型,并说明哪里不懂。有人会帮你解答的。

78391493 发表于 2009-5-18 17:12:56

BOOL WINAPI GetProcessMemoryInfo(
__in   HANDLE Process,
__outPPROCESS_MEMORY_COUNTERS ppsmemCounters,
__in   DWORD cb
);
第二第三参数不知道什么意思。。。

pusofalse 发表于 2009-5-18 17:18:37

Re 78391493:

第一个参数是进程的句柄,可以用_WinAPI_OpenProcess返回这个句柄。
第二个参数是一个结构指针,结构定义如下:
DWORDcb;
DWORDPageFaultCount;
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获取到。

78391493 发表于 2009-5-18 17:19:54

奇怪 返回一直是0

78391493 发表于 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, "ptr", $cbPtr, "dword", DllStructGetSize($cb))
MsgBox(0, "", $return)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $Handle)改了一下,变成空白了……

pusofalse 发表于 2009-5-18 17:31:03

当然会显示空白了,DllCall返回结果存储在一个数组中,GetProcessMemoryInfo返回的结果是布尔型,看下return如果是1就执行成功了。结果储存在$cb中。可以用DllStructGetData获取到。

78391493 发表于 2009-5-18 17:38:43

DllStructGetData应该怎么写?越来越晕了。。。
页: [1] 2
查看完整版本: 读取进程内存占用