haijie1223 发表于 2012-5-22 14:47:15

_WinAPI_GlobalMemoryStatus

winapi.au3中的函数:_WinAPI_GlobalMemoryStatus
代码:#include <WinAPI.au3>
#include <array.au3>
Dim $mem
$mem = _WinAPI_GlobalMemoryStatus()
_ArrayDisplay($mem)

报错:

user3000 发表于 2012-5-22 14:52:06

回复 1# haijie1223


    报告'发'哥, 我这里正常, 能显示数组!
   XP sp3 + 3.3.7.15

zcx880517 发表于 2012-5-22 14:53:18

同LZ,,报错。。

ooxxgod 发表于 2012-5-22 14:55:57

正常 3.3.9.4

vdvod 发表于 2012-5-22 14:58:49

#include <array.au3>
Dim $mem = MemGetStats()/1024
_ArrayDisplay($mem)

zldfsz 发表于 2012-5-22 14:59:30

win7 32bit+AutoIt3.3.9.0也出错

ooxxgod 发表于 2012-5-22 15:20:39

楼主或许试试其他版

131738 发表于 2012-5-22 15:22:41

winapi.au3中的函数:_WinAPI_GlobalMemoryStatus
代码:

报错:
haijie1223 发表于 2012-5-22 14:47 http://www.autoitx.com/images/common/back.gif

Win8 + 3.3.9.0-1既不报错,也不显示数组和控制台信息!

pusofalse 发表于 2012-5-22 15:33:53

3.3.7.15正常。出错原因可以肯定是结构定义出错。看下这个函数内部使用的$tagMEMORYSTATUSEX 结构是否是如下定义:

Global Const $tagMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & _
                                "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & _
                                "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"

haijie1223 发表于 2012-5-22 16:12:36

回复 9# pusofalse


    #include <array.au3>
Global Const $tagMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & _
                "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & _
                "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"

Local $tMem = DllStructCreate($tagMEMORYSTATUSEX)
Local $iMem = DllStructGetSize($tMem)
DllStructSetData($tMem, 1, $iMem)
DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $tMem)
Local $aMem
$aMem = DllStructGetData($tMem, 2)
$aMem = DllStructGetData($tMem, 3)
$aMem = DllStructGetData($tMem, 4)
$aMem = DllStructGetData($tMem, 5)
$aMem = DllStructGetData($tMem, 6)
$aMem = DllStructGetData($tMem, 7)
$aMem = DllStructGetData($tMem, 8)
_ArrayDisplay($aMem)

pusofalse 发表于 2012-5-22 17:03:31

回复 10# haijie1223


   结构没错,参数传递错了。 将第9行改为:
DllCall("Kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", DllStructGetPtr($tMem))

魔导 发表于 2012-5-25 19:42:12

回复 11# pusofalse


    真可惜我的没错 - -!

xms77 发表于 2012-5-27 09:44:23

回复 1# haijie1223
报告:win7 32bit, 3.3.7.15没有报错,数组显示正常,就是不知道显示的是啥意思?

mjpop 发表于 2012-5-28 14:09:53

xp3+at3最新版本的应该没错
页: [1]
查看完整版本: _WinAPI_GlobalMemoryStatus