Autor Tópico: Serial do HD  (Lida 7494 vezes)

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Serial do HD
« Online: Abril 17, 2008, 11:38:44 am »
Olá amigos!

Alguém saberia como obter a serial do HD utilizando WinDev?!

Desde já,
agradeço a atenção de todos.

Marcelo Cruz

  • Administrator
  • *****
  • Mensagens: 175
  • Karma: +0/-0
  • .
Re: Serial do HD
« Responder #1 Online: Abril 17, 2008, 03:25:35 pm »
Ola,
Se nao me engano o windev possui a funcao FDisqueInfo()
De uma pesquisada no manual e poste aqui sua solucao ok ?
Abraco
MarceloCruz

Marcelo Cruz

  • Administrator
  • *****
  • Mensagens: 175
  • Karma: +0/-0
  • .
Re: Serial do HD
« Responder #2 Online: Abril 17, 2008, 03:29:49 pm »
Achei tambem isto aqui na NET veja se ajuda.


SAISIE1=""

ent est composé de

  wszName est une chaîne ASCIIZ de 512
 
  dwIndex est un entier      // index of the interface
  dwType est un entier       // type of interface
  dwMtu est un entier        // max transmission unit
  dwSpeed est un entier      // speed of the interface
  dwPhysAddrLen est un entier      // length of physical address
  bPhysAddr est une chaîne ASCIIZ de 8  // physical address of adapter
 
  dwAdminStatus est un entier      // administrative status
  dwOperStatus est un entier       // operational status
  dwLastChange est un entier       // last time operational status changed
  dwInOctets est un entier         // octets received
  dwInUcastPkts est un entier      // unicast packets received
  dwInNUcastPkts est un entier     // non-unicast packets received
  dwInDiscards est un entier       // received packets discarded
  dwInErrors est un entier         // erroneous packets received
  dwInUnknownProtos est un entier    // unknown protocol packets received
  dwOutOctets est un entier        // octets sent
  dwOutUcastPkts est un entier     // unicast packets sent
  dwOutNUcastPkts est un entier    // non-unicast packets sent
  dwOutDiscards est un entier      // outgoing packets discarded
  dwOutErrors est un entier        // erroneous packets sent
  dwOutQLen est un entier          // output queue length
  dwDescrLen est un entier         // length of bDescr member
 
  bDescr est une chaîne ASCIIZ de 256  // interface description

FIN

ch est une chaîne=""
ind est un entier
tail est un entier
name est une chaîne ASCIIZ de 256
diment est un entier = Dimension(ent)

res est un entier 
res = AppelDLL32("Iphlpapi","GetIfTable",0,&tail,0)

SI tail>0 ALORS

  hmem est un entier   = AppelDLL32("kernel32","GlobalAlloc",0x40,tail)

  res  = AppelDLL32("Iphlpapi","GetIfTable",hmem,&tail,0)

  adr est un entier   = hmem + 4
  nb est un entier 

  AppelDLL32("kernel32","RtlMoveMemory",&nb,hmem,4)
  POUR ind = 1 A nb
    AppelDLL32("kernel32","RtlZeroMemory",&ent,diment)
    AppelDLL32("kernel32","RtlMoveMemory",&ent,adr,diment)

    SAISIE1 += "Index : "+ent.dwIndex + RC
    SAISIE1 += "Type : "+ent.dwType + RC
    SAISIE1 += "Speed : "+ent.dwSpeed + RC
    SAISIE1 += "Mtu : "+ent.dwMtu + RC
    SAISIE1 += "Adr len : "+ent.dwPhysAddrLen + RC
    SI ent.dwPhysAddrLen>0 ALORS
      i1 est un entier
      in1 est un entier 
      ch=""
      POUR i1 = 1 A ent.dwPhysAddrLen
        AppelDLL32("kernel32","RtlMoveMemory",&in1 , &ent.bPhysAddr + i1 - 1 , 1 )
        ch += NumériqueVersChaine(in1,"02X")
        SI i1<ent.dwPhysAddrLen ALORS
          ch+="-"
        FIN
      FIN
    FIN
    SAISIE1 += "Mac :  " + ch +RC
    SAISIE1 += "Status : "+ent.dwAdminStatus + RC
    SAISIE1 += "Operstatus : "+ent.dwOperStatus + RC
    SAISIE1 += "LastChange : "+ent.dwLastChange + RC
    SAISIE1 += "In octets : "+ent.dwInOctets + RC
    SAISIE1 += "In ucast : "+ent.dwInUcastPkts + RC
    SAISIE1 += "In NU Cast : "+ent.dwInNUcastPkts + RC
    SAISIE1 += "In Discards : "+ent.dwInDiscards + RC
    SAISIE1 += "In Error : "+ent.dwInErrors + RC
    SAISIE1 += "In Unknow : "+ent.dwInUnknownProtos + RC
    SAISIE1 += "Out Octets : "+ent.dwOutOctets + RC
    SAISIE1 += "Out Ucast : "+ent.dwOutUcastPkts + RC
    SAISIE1 += "Out NU Cast : "+ent.dwOutNUcastPkts + RC
    SAISIE1 += "Out Discards : "+ent.dwOutDiscards + RC
    SAISIE1 += "Out Errors : "+ent.dwOutErrors + RC
    SAISIE1 += "Out Qlen : "+ent.dwOutQLen + RC
    SAISIE1 += "Desciption : "+ent.bDescr + RC+RC

    adr += diment
  FIN

  AppelDLL32("kernel32","GlobalFree",hmem)
FIN

Abraco
MarceloCruz

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re: Serial do HD
« Responder #3 Online: Abril 17, 2008, 03:58:05 pm »
Amigos... eu consegui com o seguinte comando:

Resultado is string
Resultado = fDriveInfo("C:",fdSerialNumber)
Info(Resultado)

Com este simples comando, a serial do HD é informada.
Gostaria de saber, como fazer pra converter esse resultado em um formato Hexadecimal?

Desde já,
agradeço.

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re: Serial do HD
« Responder #4 Online: Abril 17, 2008, 04:25:14 pm »
Amigos,
Eu fiz a pergunta e eu mesmo encontei a resposta:

Obtendo e convertendo o número serial do HD para o formato Hexadecimal:

Resultado is string
sHex is string
t is int
Resultado = fDriveInfo("C:",fdSerialNumber)
t = Resultado
sHex = NumToString(t,"X");
Info(sHex)

Se acharem interessante a criação de um novo tópico para este item, por favor informem.

Att,

Marcelo Cruz

  • Administrator
  • *****
  • Mensagens: 175
  • Karma: +0/-0
  • .
Re: Serial do HD
« Responder #5 Online: Abril 17, 2008, 04:50:18 pm »
Ola ajritta ,

Obrigado por colocar a solucao no forum... a comunidade agradece!  ;)
MarceloCruz