FUNCTION DiskSerial
LPARAMETER cDisk
DECLARE SHORT GetVolumeInformation IN Win32API ;
STRING wroot, ;
STRING wnombuf, ;
LONG wnomsize, ;
STRING wnumero, ;
STRING wmx, ;
STRING wflag, ;
STRING wsysbuf, ;
INTEGER wsyssize
LOCAL wroot, wnombuf, wnumero, wmx
LOCAL wflag, wsysbuf, wnomsize, wsyssize
LOCAL n1,n2,n3,n4, w1,w2,w3,w4
wroot = IIF(EMPTY(cDisk), SYS(5), cDisk + ':') + "\" && disque courant
wnombuf = SPACE(255)
wnumero = SPACE(10)
wmx = SPACE(255)
wflag = SPACE(255)
wsysbuf = SPACE(255)
wnomsize = 255
wsyssize = 255
GetVolumeInformation (wroot, @wnombuf, @wnomsize, @wnumero, ;
@wmx, @wflag, @wsysbuf, @wsyssize)
*** récupérer la valeur numérique décimale de chaque c retourné
*** (en inversant car les c sont retournés dans l'ordre 4, 3, 2, 1)
n4 = ASC(SUBSTR(wnumero,1,1))
n3 = ASC(SUBSTR(wnumero,2,1))
n2 = ASC(SUBSTR(wnumero,3,1))
n1 = ASC(SUBSTR(wnumero,4,1))
*** transformer la valeur décimale en valeur hexadécimale
w1 = TRANSFORM(n1,'@0')
w2 = TRANSFORM(n2,'@0')
w3 = TRANSFORM(n3,'@0')
w4 = TRANSFORM(n4,'@0')
RETURN RIGHT(w1,2) + RIGHT(w2,2) + "-" + RIGHT(w3,2) + RIGHT(w4,2)
|
Salut Guy
Il y aussi deux autres inconvenients, sur windows 95 le scripting
n'est pas installé.
Et sur les lecteurs mappés avec win9x cela ne marche pas.
(probleme de dll GetVolumeInformation)
Merci por ton info , je ne le savais pas pour le formatage.
Olivier