我用WriteProcessMemory写线程内存时,写入字符串时正常,但写入数值时却没有反应,请问何解???!!
Public Declare Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long另:Any到底是什么变量??

解决方案 »

  1.   

    Any就是任意的变量
    变量定义的对吗?
    数值型要初始化一下
      

  2.   

    定义成any的话变不作类型安全检查...
    因为c和vb之间类型的差异,所以最好声明的时候确定类型.否则可能出错.
    还有.关于你不能写入 数值 是因为..这个原因..
    因为这个参数是传址的,而不是传值的.而 vb里 字符串变量,,和c中一样 变量名是指针.
    所以可以直接传递..
    而vb里没有 指针 所以需要 模拟..或者 就是 把 数值 转换成 字符串 再传入.
    如果要模拟的话.vb 提供了这样一个函数  varptr() 获取变量的地址..
    例:
    dim Var as long '我存储数值的变量,
    dim  Ptr as long  '定义一个变量Ptr存储var变量的地址 
    var=&h1&
    Ptr= varptr(var)  '存储变量var的地址.就像是c中指向var的指针.
    在使用 writeprocessmemory () 的时候...只要传入 Ptr 就可以了.
      

  3.   

    bu_wen(不文) 兄真的很厉害
    能不能留下你的Email呢?
    我想请叫你一些vb的问题
    我的email:[email protected]
    真的期待
      

  4.   

    如果要写入数值
    手动将 any 改为 long