返回指定地址+偏移位置存储的二进制数值.
Number := NumGet(VarOrAddress , Offset, Type) Number := NumGet(VarOrAddress , Type)
内存地址或变量. 如果 VarOrAddress 是一个变量(例如 MyVar
), 则使用变量字符串的缓冲地址. 这等同于传递 &MyVar
, 然而省略 "&" 可以执行得更好并确保目标地址+偏移是有效的.
如果变量 包含 目标地址时, 不要传递一个变量引用; 在这种情况下, 传递一个类似 MyVar+0
的表达式.
如果为空或省略(或当使用双参数模式), 则默认为 0. 否则, 请指定偏移(单位为字节), 添加到 VarOrAddress 以确定目标地址.
如果为空或省略, 则默认为 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 类型.
如果目标地址无效, 则返回空字符串. 然而, 某些无效地址这里无法检测出来并可能导致不可预知的行为.
其他情况下返回指定地址+偏移的数字.
如果只使用了两个参数, 则第二个参数可以为 Offset 或 Type. 例如, NumGet(var, "int")
是合法的.