'*
'* GetSafeArrayInfo (数组, 指定一个维数,[下标],[上标]
'*
'**************************************************************
Dim ArrayHeaderAddress As Long
Dim DimensionCount As Integer '维数计次
CopyMemory ArrayHeaderAddress, ByVal VarPtr(AnyArray) + 8, 4
CopyMemory ArrayHeaderAddress, ByVal ArrayHeaderAddress, 4 '获取数组头地址
If ArrayHeaderAddress < 1 Then Exit Function
CopyMemory DimensionCount, ByVal ArrayHeaderAddress, 2 '获取数组维数
If sDimension > DimensionCount Then Exit Function '若指定的维数大于实际维数则退出
CopyMemory LowerBound, ByVal (ArrayHeaderAddress + 16 + (DimensionCount - sDimension) * 8) + 4, 4 '获取下标
CopyMemory Elements , ByVal (ArrayHeaderAddress + 16 + (DimensionCount - sDimension) * 8), 4
'获取指定维数下的元素个数
UpperBound = Elements + LowerBound - 1 '获取指定维数下的上标
CopyMemory Flags, ByVal ArrayHeaderAddress + 2, 2 '获取数组属性
CopyMemory cbElements, ByVal ArrayHeaderAddress + 4, 2 '获取数组单个元素长度
CopyMemory cLocks, ByVal ArrayHeaderAddress + 8, 2 '获取数组锁定计数
CopyMemory AddressOfData, ByVal ArrayHeaderAddress + 12, 4 '获取数组首元素地址
GetSafeArrayInfo = ArrayHeaderAddress
End Function