如何在Visual Basic 中取得变量在内存中的地址(Address of Variables)

如何在Visual Basic 中取得变量的内存地址(Address of Variables)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本文适用于

  • Microsoft Visual Basic Learning Edition for Windows, versions 5.0, 6.0

  • Microsoft Visual Basic Professional Edition for Windows, versions 5.0, 6.0

  • Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0, 6.0

摘要

很少有vb程序员需要获得一个变量的低级信息,例如内存地址。然而,一些API函数需要这种

信息,本文描述的方法可以帮助VB程序员取得这些信息

VarPtr - Returns the address of a variable.返回变量的地址

VarPtrArray - Returns the address of an array.
返回数组地址

StrPtr - Returns the address of the UNICODE string buffer.
返回UNICODE字符串缓冲区地址

VarPtrStringArray - Returns the address of an array of strings.
返回字符串数组地址
ObjPtr - Returns the pointer to the interface referenced by an object variable.
返回一个对象的接口引用指针

正文

VarPtr



局限:这个函数不能用于取得数组的地址

VarPtrArray

 


Dim lngSafeArrayAddress as Long


局限:VarPtrArray函数不能用于取得一个字符串数组的地址,因为vb会对字符串进行UNICODE/ANSI转换,如果对字符串数组使用VarPtrArray,将会得到一个临时ANSI数组拷贝的地址。

StrPtr

取得字符串第一个字符的地址
Dim lngCharAddress as Long


当你在API调用中需要传递一个UNICODE字符串指针时可以使用这个函数

VarPtrStringArray

VarPtrStringArray用于取得字符串数组的地址。为了避免VB 进行UNICODE/ANSI转换,

它的声明必须在类型库中定义

你也可以使用midl编译器将下面的.odl文件编译成你自己的类型库 :)

如果是Visual Basic 5.0,建立一个文本文件名为VB6ptrlib.odl,内容如下:


如果是Visual Basic 5.0,建立一个文本文件名为VB5ptrlib.odl,内容如下:


在命令行使用MIDL编译器编译.ODL文件建立一个VB5VB6的类型库(.TLB

MIDL /t VB6ptrlib.odl

MIDL /t VB5ptrlib.odl


为了使用VarPtrStringArray你需要引用这个类型库


例子:

ObjPtr

ObjPtr返回一个object变量的地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值