NumGet

指定されたアドレス+オフセットに格納されている2進数を返します。

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

パラメータ

Source

型:オブジェクトまたは整数

Bufferのようなオブジェクトまたはメモリアドレス。

PtrプロパティとSizeプロパティを実装したオブジェクトであれば何でも使用できますが、この関数はネイティブのBufferオブジェクトに最適化されています。これらのプロパティを持つオブジェクトを渡すことで、関数が不正な場所からメモリを読み込むことがないようにします。そうすると、クラッシュやその他の予測不可能な動作が起こる可能性があります。

Offset

型:整数

空白または省略したとき、または2パラメータモードのときの初期値は0になります。そうでなければ、ソースアドレスを決定するためにSourceに追加するオフセットをバイト単位で指定します。

Type

型:文字列

以下の文字列のいずれか1つ:UInt、Int、Int64、Short、UShort、Char、UChar、Double、Float、PtrまたはUPtr

AutoHotkeyのネイティブ整数型はInt64なので、符号なし64ビット整数はサポートされていません。したがって、0x800000000000以上の数値を扱う場合は、U接頭辞を省略し、負の値は大きな整数として解釈します。例えば、Int64として-1という値は、UInt64を意図している場合、本当は0xFFFFFFFFFFFFFFFFになります。64ビットビルドでは、UPtrはInt64と同等です。

詳しくはDllCallの種類をご覧ください。

戻り値

型:整数または浮動小数点数

この関数は、指定されたアドレス+オフセットにある2進数を返します。

総論

パラメータが2つだけ存在する場合、2つ目のパラメータはTypeでなければいけません。例えば、NumGet(var, "int")は有効です。

送信元アドレスが無効な場合、例外が発生することがあります。しかし、無効なアドレスの中には、それを検出できないものもあり、予測できない挙動を引き起こす可能性があります。アドレスの代わりにBufferオブジェクトを渡すことで、ソースアドレスを常に検証することができます。

NumPutDllCallBufferオブジェクトVarSetStrCapacity