NumPut

AutoHotKey

NumPut

以二进制格式把数字存储到指定地址+偏移的位置.

NumPut(Number, VarOrAddress [, Offset = 0][, Type = "UPtr"])

参数

Number

要保存的数字.

VarOrAddress

内存地址或变量. 如果 VarOrAddress 是类似 MyVar的变量且它的值不是纯数字或对象. 则相当于传递 &MyVar. 然而,省略 "&" 可以得到更好的执行效果并能确保目标地址+偏移是有效的.

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

Offset

偏移(单位为字节), 添加到 VarOrAddress 以确定目标地址.

Type

下列字符串的其中一个(省略时默认为 UPtr):
UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr 或 UPtr

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

更多细节请参阅 DllCall 类型.

返回值

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

其他情况下则返回刚写入项右边的地址.常用于写入不同类型的一序列数字,例如在 DllCall 中使用的结构.

一般说明

如果整数太大而无法用指定的 Type 存储, 那么它的高位会被忽略; 例如. NumPut(257, var, 0, "Char") 将存储数字 1.

如果只使用了三个参数,则第三个参数可以为 OffsetType.例如,NumPut(x, var, "int") 是有效的.

相关

NumGet, DllCall, VarSetCapacity