找回密码
 加入
搜索
查看: 1215|回复: 1

关于读内存的一点问题.双浮点.

[复制链接]
发表于 2009-7-31 05:25:51 | 显示全部楼层 |阅读模式
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
    If Not IsArray($ah_Handle) Then
        SetError(1)
        Return 0
    EndIf
    Local $v_Buffer = DllStructCreate($sv_Type)
    If @Error Then
        SetError(@Error + 1)
                Return 0
    EndIf
    DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
        If Not @Error Then
        Local $v_Value = DllStructGetData($v_Buffer, 1)
        Return $v_Value
    Else
        SetError(6)
        Return 0
    EndIf
EndFunc

上面调用DLL读取内存的模块.

我知道 "float" 是读浮点的参数.
在aotoit的帮助里我找到了 双浮点的参数是 "double"
     float        32bit(4bytes) floating point
     double    64bit(8bytes) floating point
但是带入后,float浮点读取没问题.
double双浮点却读不出正确的数值:
       _MemoryRead(0x15AEFD24, $Handle,"double");$Handle是读取目标的内存进程
向高手请教一下,这是怎么回事呢?
应该怎样修改才能正确读出双浮点呢?
 楼主| 发表于 2009-7-31 08:10:46 | 显示全部楼层
刚才我用 double型读了另一个 双精度浮点数,结果又读出的结果又正常.
真是奇怪...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 00:20 , Processed in 0.075397 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表