VB6.0 从内存地址获取String内容

VB6.0开发,调用了DLL中的方法去获取两个字符串,但实际返回字符串的地址。

怎样从地址得到完整的字符串内容呢?方法如下,核心是oleaut32.dll中的SysAllocStringByteLen方法:

Private Declare Function SysAllocStringByteLen Lib "oleaut32.dll" (ByVal m_pBase As Long, ByVal l As Long) As String
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Long) As Long

' This function is called from the dll
' pName and pId is address, a number
Public Function callBack(ByVal pName As Long, ByVal pId As Long) As Long
 
MsgBox ("pName is: " & pName & "   " & "pId is: " & pId)

Dim deviceName As String
Dim deviceId As String
deviceName = SysAllocStringByteLen(pName, lstrlen(pName))
deviceId = SysAllocStringByteLen(pId, lstrlen(pId))
 
MsgBox (deviceName & "  " & deviceId)

End Function

效果:

参考:如何在VB中从long指定的地址中获取字符串-腾讯云开发者社区-腾讯云

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VB6.0中,要获取U盘的序号,可以使用WMI(Windows Management Instrumentation,Windows管理规范)来实现。具体步骤如下: 1. 打开VB6.0,创建一个新的工程。 2. 在工具箱中选择“项目”->“参考”,在弹出的对话框中选择“Microsoft WMI Scripting Library”,然后点击“确定”按钮,以引用WMI库。 3. 在Form1中添加一个按钮,并命名为“btnGetDriveSerialNumber”。 4. 双击按钮,进入按钮的click事件处理程序。 5. 在按钮的click事件处理程序中,添加以下代码: ```vb Private Sub btnGetDriveSerialNumber_Click() Dim objWMIService As Object Dim colDrives As Object Dim objDrive As Object Dim driveLetter As String Dim driveSerialNumber As String ' 获取WMI服务对象 Set objWMIService = GetObject("winmgmts:") ' 获取所有逻辑驱动器对象 Set colDrives = objWMIService.ExecQuery("Select * From Win32_LogicalDisk") ' 遍历每个逻辑驱动器对象 For Each objDrive In colDrives ' 判断是否为可移动驱动器(U盘) If objDrive.DriveType = 2 Then ' 获取驱动器盘符 driveLetter = objDrive.DeviceID ' 获取驱动器序列号 driveSerialNumber = objDrive.VolumeSerialNumber ' 显示驱动器盘符和序列号 MsgBox "Drive " & driveLetter & " serial number: " & driveSerialNumber End If Next objDrive ' 释放对象 Set objDrive = Nothing Set colDrives = Nothing Set objWMIService = Nothing End Sub ``` 6. 运行程序,在点击按钮后,程序会遍历所有U盘并显示它们的盘符和序列号。 以上是在VB6.0中获取U盘序号的步骤和代码,通过使用WMI库和遍历逻辑驱动器对象,可以获取U盘的序号并进行相应操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹰信息技术服务部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值