なんてことは無い・・・ByValで値を渡していないことが原因。

などという・・・答えとしては非常に単純なのだが、
そんなの気付かねーよ。という問題で詰まっていた。
お手軽にVB6で作ってたのが原因っちゃ原因かなぁ。
他のプロセスのメモリーを読み取る部分抜粋。
・・・抜粋なのでこのままだと動かないかもー。

'Win32API連中の宣言
Public Declare Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Public Declare Function ReadProcessMemory Lib "kernel32" _
    (ByVal hProcess As Long, lpBaseAddress As Any, _
    lpBuffer As Any, ByVal nSize As Long, _
    lpNumberOfBytesWritten As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" _
    (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" _
    (ByVal hObject As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" _
    (ByVal hWnd As Long, lpdwProcessId As Long) As Long

'定数宣言
Public Const SYNCHRONIZE = &H100000
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED _
    Or SYNCHRONIZE Or &HFFF&)

'TargetNameのタイトル窓のAddr番地を読む
Public Sub ReadMem(TargetName as String, Addr As Long)
  Dim lhWnd As Long
  Dim lHndl As Long
  Dim dwRead As Long
  Dim Temp$
  Dim lRet As Long
  Dim Chars As Integer

  Chars = 256

  lhWnd = FindWindow(vbNullString, TargetName) '窓タイトルで窓を探す
  If lhWnd <> 0 Then
    Call GetWindowThreadProcessId(lhWnd, PID)  'ProcessID取得
    lHndl = OpenProcess(PROCESS_ALL_ACCESS, 0, PID)  'プロセスオープン
    If lHndl <> 0 Then
      Temp = String(Chars, " ")
      'AddrアドレスからChars - 1 Byte分読み込んでTempに格納する
      lRet = ReadProcessMemory(lHndl, ByVal Addr, ByVal Temp, Chars - 1, dwRead)
      If lRet <> 0 Then
        Debug.Print Temp
      End If
    End If
    Call CloseHandle(lHndl)  'ハンドルの破棄
  End If
End Sub

詳しくは FindWindow GetWindowThreadProcessId OpenProcess ReadProcessMemory 辺りを
ぐぐってくれたまえ。
もしReadしてみて目的のアドレスの中身を返してるように見えないなぁ。って時は
ReadProcessMemoryに渡すアドレスが ByVal 渡しになってるか確認。
ってことらしい。
いや〜。解らなかったなぁ。
色々なAPI試して・・・紆余曲折した割にはそんなオチか・・・
何せ、これでネタのための種作りが可能になるぞ。