NumGet()

返回指定地址+偏移位置存储的二进制数值.

Number := NumGet(VarOrAddress , Offset, Type)
Number := NumGet(VarOrAddress , Type)

参数

VarOrAddress(变量或地址)

内存地址或变量. 如果 VarOrAddress 是一个变量(例如 MyVar), 则使用变量字符串的缓冲地址. 这等同于传递 &MyVar, 然而省略 "&" 可以执行得更好并确保目标地址+偏移是有效的.

如果变量 包含 目标地址时, 不要传递一个变量引用; 在这种情况下, 传递一个类似 MyVar+0 的表达式.

Offset(偏移)

如果为空或省略(或当使用双参数模式), 则默认为 0. 否则, 请指定偏移(单位为字节), 添加到 VarOrAddress 以确定目标地址.

Type(类型)

如果为空或省略, 则默认为 UPtr. 否则, 请指定 UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr 或 UPtr.

不支持 无符号 的 64 位整数, 因为 AutoHotkey 的内置整数类型是 Int64. 因此, 要使用大于或等于 0x8000000000000000 的数字, 请省略 U 前缀并将任何负值解释为较大的整数. 例如, 作为 Int64 的 -1 值实际上是 0xFFFFFFFFFFFFFFFF(如果期望它作为 UInt64). 在 64 位构建中, UPtr 等同于 Int64.

与 DllCall() 不同的是, 作为原义字符串使用时必须括在引号中.

更多细节请参阅 DllCall 类型.

返回值

如果目标地址无效, 则返回空字符串. 然而, 某些无效地址这里无法检测出来并可能导致不可预知的行为.

其他情况下返回指定地址+偏移的数字.

一般说明

如果只使用了两个参数, 则第二个参数可以为 OffsetType. 例如, NumGet(var, "int") 是合法的.

NumPut(), DllCall(), VarSetCapacity()