Página 2 de 2

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 17 Fev 2015 23:01
por Jairo Maia
Olá Fladimir,

Sem querer atrapalhar sua mensagem dirigida ao Bencz acima (com certeza irá lê-la), você poderia me dizer como faço para compilar no Harbour o exemplo que você postou?

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 18 Fev 2015 02:00
por fladimir
Jairo, talvez pq tenha faltado a função Service_WMI q segue... tb para a sintaxe FOR... EACH adicionar no inicio #include 'hbcompat.ch'

Se não informar qual função esta acusando faltar ou mensagem de erro.

Código: Selecionar todos

**********************
Function Service_WMI()
**********************
Static oWmiService 
Local oScriptObj
If oWmiService==nil
 oScriptObj=CREATEOBJECT("wbemScripting.SwbemLocator")
 oWmiService=oScriptObj:ConnectServer()
End If
Return oWmiService
[]´s

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 18 Fev 2015 08:22
por bencz
Fladimir, bom dia
Não sei informar o motivo do app-crash...
Talvez algum close ou dispose que ficou faltando não sei....

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 18 Fev 2015 08:54
por ANDRIL
Poderia ser algum erro de memória, veja as declarações das variáveis oWmiService.

Na função TesteHD()
Local oWmiService

Na função Service_WMI()
Static oWmiService

Tente definir nesta função ela também como Local, visto que ela esta passando o valor via return.

Talvez o erro ao sair pode ser no momento em que os objetos são liberados da memória.
Ate+

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 18 Fev 2015 09:15
por fladimir
Vlw pessoal...

A dica do ANDRIL deu certo.

obrigado

[]´s

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 28 Fev 2015 10:44
por Jairo Maia
Olá Pessoal,

Tentei montar uma função com base no exemplo do Fladimir e a correção do Anril, mas tenho um resultado muito estranho e testei em vários HDs e acontece o mesmo.

Sempre retorna algo assim no 7 ou 8: 202020202020565038463430385a375238524e48

No XP fiz um teste e retorna isso: 3636323234313234333030372020202020202020

Nota: Não preciso usar o Swap.

O que tem errado nesse exemplo:

Código: Selecionar todos

#include "hbcompat.ch"

Function Main()

 TesteHD()

Return Nil 

*******************
procedure TesteHD()
   
 Local oWmiService, oListaProcess, oDisk, cSerial

 oWmiService := Service_WMI()
 oListaProcess := oWmiService:ExecQuery('Select * from Win32_PhysicalMedia')

 FOR Each oDisk in oListaProcess

  cSerial := oDisk:SerialNumber
  
  If IsDigit( cSerial )
   Hb_Alert( cSerial )
  EndIf

 NEXT
 
Return

**********************
Function Service_WMI()

 Local oScriptObj, oWmiService

 If oWmiService==nil
  oScriptObj=CREATEOBJECT("wbemScripting.SwbemLocator")
  oWmiService=oScriptObj:ConnectServer()
 EndIf

Return oWmiService

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 28 Fev 2015 18:53
por fladimir
Não seria pq vc colocou pra mostrar somente se for Digito o retorno?

Pq na verdade o nr serial meu por exemplo tem Caracteres, então talvez seja pq só esta mostrando a segunda parte do nr serial ou nr complementar q é composto somente por Digitos (números) não?

[]´s

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 28 Fev 2015 20:10
por Jairo Maia
Olá Fladimir, obrigado por responder.

Você está se referindo a função IsDigit(), mas ela não tem essa função. A IsDigite() checa se o primeiro caractere é um digito entre "0" a "9" ou entre "a" a "z". Coloquei porque sem ela me mostra também um Nil e um outro caractere estranho. Mas deve ser do CDRom ou do pendrive.

Resumindo, o resultado é o mesmo se remover essa função. Muito estranho. Não tenho ideia do que seja.

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 28 Fev 2015 21:54
por fladimir
Entendi, confundi o nome de sua função com uma q eu conheço q verifica se só tem numeros na string...

Ok...

Faz assim abre o prompt ai e executa o comando abaixo e ve o q aparece:

Código: Selecionar todos

wmic diskdrive get serialnumber

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 28 Fev 2015 23:47
por Jairo Maia
Fladimir,

Obtive exatamente o mesmo resultado. Será que dá pra usar isso como serial de fábrica? Estranho é que está muito diferente do que você postou, e no seu caso, está muito parecido com o resultado da função VolSerial(), que é a que uso hoje, mas não é o serial de fábrica.

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 01 Mar 2015 00:43
por fladimir
Acredito então q esteja correto pois este comando q te passei é da Microsoft pra pegar o Nr Serial.

[]´s

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 01 Mar 2015 10:01
por Jairo Maia
Valeu Fladimir,

Vou fazer alguns testes oportunamente em outras máquinas de clientes com este exemplo e comparar com o comando que você passou.

Obrigado pela atenção.

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 01 Mar 2015 11:03
por fladimir
Ok, acredito q vai confirmar o q conversamos.

ficamos no aguardo

[]´s

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 04 Nov 2017 13:03
por Hasse
Bom dia colegas.

Renovando o assunto.

Encontrei um recurso nativo do windows. Funciona muito bem

run wmic csproduct get vendor, version
run wmic computersystem get model,name,manufacturer,systemtype
run wmic csproduct get name, identifyingnumber
run wmic bios get serialnumber

Interessante observar que "identifyingnumber" e "serialnumber" produzem o mesmo resultado.

MAIS:
Ao digitar digitar wmic /? no modo CMD:
Lista uma penca de informações disponíveis. Acho que chega perto de 100.

Leitura do Serial de Fabrica do HD x[H]arbour

Enviado: 04 Nov 2017 13:47
por Hasse
Continuando:

Alguns comandos (ou muitos, não sei) possuem ainda sub-comandos.

Por exemplo:
wmci diskdrive list ?/ > listaDiskDrive.txt && cria uma lista em txt dos sub-comandos.

É interminável......