なんか、ごちゃごちゃしてるので整理しときます。
>Windows 7 x64 を使ってますが sysinfo(34),sysinfo(35) の取得がうまく行かないようです
HSPは32ビットの整数しか対応してないので、その範囲を超える分はうまくいかないです。
>Ex関数を使っても値が常にゼロになってしまいます。
GlobalMemoryStatusExの使い方が間違ってます。
MEMORYSTATUSEXのサイズをセットしてないのでエラーになってます。
>DWORDLONG型は HSP に対応しているのでしょうか
DWORDLONG型は64ビットの整数なので標準では対応してません。
64ビット整数を扱うためのプラグインやモジュールを使うか、小数に変換してから扱う方法があります。
#uselib "kernel32"
#func GlobalMemoryStatus "GlobalMemoryStatus" sptr
#func GlobalMemoryStatusEx "GlobalMemoryStatusEx" sptr
dim get,8
dim getex,16
getex=64
dupptr getex2,varptr(getex),64,3
; -- メモリ情報取得
GlobalMemoryStatus varptr(get)
GlobalMemoryStatusEx varptr(getex)
; -- 物理メモリの搭載容量
mes "メモリ搭載容量"
mes "sysinfo(34)\t"+sysinfo(34)
mes "WinAPI\t\t"+get(2)
mes "WinAPI(Ex)\t"+strf("%I64u",getex2(1)) ; double(strf("%I64u",getex2(1)) で小数に変換できる
; -- メモリ使用率(%)
mes "メモリ使用率"
mes "sysinfo(33)\t"+sysinfo(33)
mes "WinAPI\t\t"+get(1)
mes "WinAPI(Ex)\t"+getex(1)
if(sysinfo(34) < 0){
dialog "あなたの Windows は 64bit (メモリ4GB以上?)"
}