请高手提供可用的DLL文件和申明调用函数,万分感谢,给分
------解决方案--------------------
VC程序设计
获取硬盘序列号代码
http://www.xiaozhou.net/cooldog/article.asp?id=91
------解决方案--------------------
关注 接分
------解决方案--------------------
获得硬盘序列号
--------------------------------------
//DISKS SERIAL NUMBER
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"
//script
String ls_Rootpath, ls_volumnename
ls_Rootpath = "C:" // 指定要得到序列号的硬盘, 一般情况都是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
beep(1)
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)
if lb_rtn = true then
MessageBox("函数调用成功!","硬盘序列号为:"+string(lul_volumeserialnumber))
else
MessageBox("提示","函数调用失败!")
end if
------解决方案--------------------
楼主已经说是要“硬盘物理序列号,而不是C盘符卷标号”(请pengbinhui注意),用GetVolumeInformationA函数只能取分区的卷标号,用DIR命令可以显示出来,如
C:\>dir *.
驱动器 C 中的卷是 WinXP
卷的序列号是 3C04-BE39
只不过是以十六进制方式显示的。
而GetVolumeInformation的声明如下,请注意数据类型
FUNCTION Long GetVolumeInformation(String lpRootPathName, REF String lpVolumeNameBuffer, Long nVolumeNameSize, REF Long lpVolumeSerialNumber, Long lpMaximumComponentLength, Long lpFileSystemFlags, REF String lpFileSystemNameBuffer, Long nFileSystemNameSize) LIBRARY "kernel32.dll"