在PB中调用DiskID32.dll获得硬盘物理ID号乱码!如何解决?

nuanshuidai 2006-08-30 09:09:41
在网上搜了好多关于PB获取硬盘ID号的资料,基本上都是用DiskID32.dll文件函数来取得。

按网上的例子我运行以下代码,可是取出来的却是“䰱䌲慍瑸”这样的乱码!我的系统是XP SP2系统。

大家知道这是怎么回事吗?如何解决?

代码如下:

string ls_disk1=space(32)
string ls_disk2=space(32)
string ls_disk3
diskid32(ls_disk1,ls_disk2)
sle_3.text=right(trim(ls_disk2),len(trim(ls_disk2)) - 2)+mid(trim(ls_disk1),1,2)

或者大家有别的好方法取得硬盘ID号吗?
...全文
791 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuanshuidai 2006-08-31
  • 打赏
  • 举报
回复
不行,楼上的是获得硬盘的卷标,也就是每次格式化硬盘后系统自动分配的一个随机数。我说的是获得硬盘的物理ID,一般通过DLL文件获得。

大家帮帮我,我从网上找的DLL文件没办法获得,取得的是乱码,我想可能是在C程序写的时候和PB的变量不符造成的。或者还有别的原因。我不会写C程序。

会的同志帮帮我吧!谢谢了!
polestarxu 2006-08-31
  • 打赏
  • 举报
回复
呵呵
圣殿骑士18 2006-08-31
  • 打赏
  • 举报
回复
自己写,呵呵
gjz_1209 2006-08-31
  • 打赏
  • 举报
回复
楼上的这个行
doodle 2006-08-31
  • 打赏
  • 举报
回复
以前用过一个API
声明:
Function Boolean GetVolumeInformationA( ref String ls_Rootpath, &
ref String ls_volumnename, Ulong lul_VolumeNameSize, ref Ulong lul_VolumeSerialNumber, &
ref Ulong lul_MaximumComponentLength, ref Ulong lul_FileSystemFlags, &
ref String ls_FileSystemNameBuffer, Ulong lul_FileSystemNameSize ) Library 'Kernel32.dll'

代码:
String ls_Rootpath, ls_volumnename
ls_Rootpath = 'C:' // 指定要得到序列号的硬盘,
ls_volumnename = Space(256) // 分配足够的空间

Ulong lul_VolumeNameSize
lul_VolumeNameSize = 256

Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags
lul_MaximumComponentLength = 256

String ls_FileSystemNameBuffer
ls_FileSystemNameBuffer = space(256)

Ulong lul_FileSystemNameSize
lul_FileSystemNameSize = 256

boolean lb_rtn

lb_rtn = False
lb_rtn = GetVolumeInformationA(ls_Rootpath, ls_volumnename, lul_VolumeNameSize, lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags, ls_FileSystemNameBuffer, lul_FileSystemNameSize)

return lul_VolumeSerialNumber// 返回硬盘序列号

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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