A better and safer way of doing this without shelling out!
(This is for vfp7.0) I don'tk now if it works on older versions..
FUNCTION ReadSerial()
** This function will retrive the HDD serial number! and return it back to the calling function
LOCAL lpRootPathName, ;
lpVolumeNameBuffer, ;
nVolumeNameSize, ;
lpVolumeSerialNumber, ;
lpMaximumComponentLength, ;
lpFileSystemFlags, ;
lpFileSystemNameBuffer, ;
nFileSystemNameSize
lpRootPathName = LTRIM(SYS(5))+"\" && Drive and directory path (e.g. C:\)
lpVolumeNameBuffer = SPACE(256) && lpVolumeName return buffer
nVolumeNameSize = 256 && Size of/lpVolumeNameBuffer
lpVolumeSerialNumber = 0 && lpVolumeSerialNumber buffer
lpMaximumComponentLength = 256
lpFileSystemFlags = 0
lpFileSystemNameBuffer = SPACE(256)
nFileSystemNameSize = 256
DECLARE INTEGER GetVolumeInformation IN Win32API AS GetVolInfo ;
STRING @lpRootPathName, ;
STRING @lpVolumeNameBuffer, ;
INTEGER nVolumeNameSize, ;
INTEGER @lpVolumeSerialNumber, ;
INTEGER @lpMaximumComponentLength, ;
INTEGER @lpFileSystemFlags, ;
STRING @lpFileSystemNameBuffer, ;
INTEGER nFileSystemNameSize
RetVal=GetVolInfo(@lpRootPathName, @lpVolumeNameBuffer, ;
nVolumeNameSize, @lpVolumeSerialNumber, ;
@lpMaximumComponentLength, @lpFileSystemFlags, ;
@lpFileSystemNameBuffer, nFileSystemNameSize)
cSerial = TRANSFORM(lpVolumeSerialNumber,'@0x') && convert it to hex XXXX-XXXX
RETURN (SUBSTR(cSerial,3,4)+'-'+subSTR(cSerial,7,4))
Please let me know if this helped you
Tekno
Wireless Toyz
Ypsilanti, Michigan