Sempre q preciso obter um dado externo, especificamente o serial do HD, uso o comando VOL C: > ARQX.TXT e leio o arquivo a procura do mesmo.
O problema que em alguns XPs e agora no VISTA START EDITION nao consigo dentro do programa obter tal informacao ( gera o arquivo em branco ).
Nao uso a funcao VOLSERIAL() da CT,CTP porque sempre retorna -1 no meu micro (WIN98) entao nao a considero segura.
Bom criei uma funcao para tentar obter este dado independente da versao do WINDOWS e no 9x, ME, XP (PROFISSIONAL) funcionou.
Agora queria q alguem q tenha o VISTA (se possivel em todas as suas versoes) testassem o codigo.
Código: Selecionar todos
/*
compilar: clipper and.prg
linkar..: rtlink fi and ou blinker fi and
*/
cls
@01,01 say"O numero serial desta maquina: "+myvolserial("C")
inkey(0)
FUNCTION MyVolSerial(par1)
*---------------------------------------------------------------------------
*par1 = C letra da unidade
*funcao = exibir o numero do volume independente do windows utilizado
*uso MyVolSerial("C")
*---------------------------------------------------------------------------
local tela, string,tela1:=savescreen(00,00,24,79)
if empty(par1)=.t.
par1="C"
endif
*--limpa a tela antes
cls
volcomand="vol "+left(par1,1)+":"
*--se nao usa o blinker
run &volcomand
*--se usa o blinker
*Swpruncmd("&volcomand",0,"","")
tela=savescreen(00,00,03,79)
cls
memowrit("and.txt",strtran(tela,chr(7),""))
string=memoread("and.txt",80)
ferase("and.txt")
restscreen(00,00,24,79,tela1)
return substr(string,at("-",string)-4,4)+substr(string,at("-",string),5)
Se utilizarem o blinker basta acertarem o codigo fonte,
Fico no Aguardo...




