API中参数类型为LPTSTR的在vb.net中如何声明?

firechun 2003-08-29 11:54:08
例如
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // size of buffer
LPTSTR lpBuffer // drive strings buffer
);
在VB6中调用方式为
dim nBufferLength as long
dim lpBuffer as string
nBufferLegnth=255
lpbuffer=space(nBufferLength)
ret=GetLogicalDriveStrings(nBufferLength,lpBuffer)

在VB.Net中我这样调用
dim nBufferLength as integer=255
dim lpBuffer as New String(" ",nBufferLength)
ret=GetLogincalDriveString(nBufferLength,lpBuffer)
返回的lpBuffer总是只包含第一个驱动器盘符
类似的API好象都有这样的问题,lpBuffer在vb.net中该声明为什么类型?

...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rock29 2003-08-29
  • 打赏
  • 举报
回复
是这样的,我也碰到同样的问题,关注答案
firechun 2003-08-29
  • 打赏
  • 举报
回复
很急,在线等,有人吗?
Brunhild 2003-08-29
  • 打赏
  • 举报
回复
GetLogicalDriveStrings可以这样用:
Dim s As New String(" ", 256)
Dim i As Integer = Me.GetLogicalDriveStrings(s.Length, s)
s = s.Substring(0, i - 1)
Dim sa() As String = s.Split(ControlChars.NullChar)
For Each s In sa
Console.WriteLine("Found:" & s)
Next
firechun 2003-08-29
  • 打赏
  • 举报
回复
问题解决,我可不可以给自己加分?hoho
vb.net中的String包含chr(0)时,会被“截断”,也就是只显示chr(0)前面的字符,但string的内容并没有问题,用length得到返回值与字符的真实长度仍然相等。上面所说的GetLogicalDriveStrings返回值虽然只能看到"A:\",但用split分隔后,仍然获得所有驱动器盘符。其它类似API也是这样。

调用API是没问题了,不过假如我要完整显示包含chr(0)的字符串,应该怎么做呢?头痛。。。。上星期才开始用.net,学习中。。。。。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧