MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Serial do HD

    Compartilhe

    emacsabino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    Serial do HD

    Mensagem  emacsabino em Ter 04 Set 2012, 14:44

    Bom dia a todos! Amigos estou querendo usar o código abaixo junto com o outro que vi que é do JPaulo. Só que não tá dando certo,alguém pode me ajudar a adaptar, eu tenho que criar uma tabela para capturar o número do HD só que qual seria o nome que tenho que dá a tabela e o nome do campo? O código do JPaulo já serve para não gravar outro número de HD se lá na tabela já tiver outro
    Esse código eu uso para pegar o número de série
    Option Compare Database
    Private Declare Function GetVolumeInformation Lib "kernel32" _
    Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long

    Public Function DriveSerialNumber(strDrive As String) As String
    'Para obter o numero de serie do HD
    'Na janela imediata digite: ?DriveSerialNumber("c")
    Dim X As Long, lngSerialNum As Long
    Dim strRoot As String
    strRoot = Left$(strDrive, 1) & ":\"
    X = GetVolumeInformation(strRoot, "", 255, lngSerialNum, 0, 0, "", 255)
    DriveSerialNumber = Hex$(lngSerialNum)
    End Function

    Ai no formulário principal ao abrir coloquei
    Call DriveSerialNumber("c")
    Feito isso, quando abro o aplicativo ele cria um monte de tabelas, eu queria saber como faria para criar uma tabela e jogar o número do HD nela pq ai depois eu poderia usar o código abaixo do JPaulo para evitar instalar em outro computador


    Dim x As String

    Dim y As Variant

    x=DLookup("SeuCampoNumeroHD","SuaTabela","SeuCampoNumeroHD")

    y= Call DriveSerialNumber("c")


    If y <> x Then

    MsgBox "Não autorizado"

    DoCmd.Quit

    Else

    Exit Sub

    End If


    Aguardo a ajuda de vocês

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Serial do HD

    Mensagem  JPaulo em Ter 04 Set 2012, 15:57

    Você já tem de ter a tabela criada e o numero de serie inserido nela, para que seja validado assim;


    Private Sub Form_Open(Cancel As Integer)
    Dim x As String
    Dim y As Variant

    y = DriveSerialNumber("c")
    x = Nz(DLookup("SeuCampoNumeroHD", "SuaTabela", "SeuCampoNumeroHD='" & y & "'"), "")

    If y <> x Then

    MsgBox "Não autorizado"
    DoCmd.Quit

    Else

    Exit Sub
    End If
    End Sub



    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    emacsabino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    Re: [Resolvido]Serial do HD

    Mensagem  emacsabino em Ter 04 Set 2012, 16:30

    Deu certo aqui Mestre. Uma grande abraço para você e que você continue sempre assim, abençoado por Deus

    abasilio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/09/2012

    Este código não funciona em máquinas de 64 bits

    Mensagem  abasilio em Qua 05 Set 2012, 09:22

    Executei esse código e ele funcionou perfeitamente no meu notebook Core i5 com Windows 7 de 64 bits, mas não funcionou num servidor com Windows Server 2008 R2 Datacenter de 64 bits, já com Service Pack 1 instalado, equipado com processador AMD Opteron 4171 HE. Pelo jeito, dá pau de cara quando ele vê a instrução chamando o "kernel32", quando surge a mensagem: "Erro de compilação: O código desse projeto deve ser atualizado para uso em sistemas de 64 bits. Analise e atualize instruções Declare e, em seguida, marque-as com o atributo PrtSafe."

    Alguém saberia como obter o serial do HD numa máquina de 64 bits?

    Obrigado pela atenção.

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3350
    Registrado : 04/04/2010

    Re: [Resolvido]Serial do HD

    Mensagem  Avelino Sampaio em Qua 05 Set 2012, 09:47

    Olá

    veja neste meu artigo abaixo, como usar a condicional #IF para adaptar códigos de 32 e 64 bits. Baixe o arquivo TXT, feito pela Microsoft, com centenas de API's modificadas para atender sitemas de 64 bits

    [Você precisa estar registrado e conectado para ver este link.]

    Bom estudo!


    Última edição por Avelino Sampaio em Qua 05 Set 2012, 09:50, editado 1 vez(es)


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Serial do HD

    Mensagem  JPaulo em Qua 05 Set 2012, 09:48

    Tente declarar o PtrSafe


    Private Declare PtrSafe Function GetVolumeInformation Lib "kernel32" _
    Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long


    Deveria checkar a versão, antes das instruções com um #If VBA7 Then.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    abasilio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 05/09/2012

    Re: [Resolvido]Serial do HD

    Mensagem  abasilio em Qua 05 Set 2012, 10:24

    Puxa vida! Vocês são demais!!! Conseguiram resolver o meu pepino em poucos minutos, às 5h da madrugada! E consegui colocar o sistema pra funcionar num Cloud Server antes dos funcionários chegarem pra trabalhar! Valeu demais, galera! O código ficou assim:

    Option Compare Database

    #If VBA7 Then
    Private Declare PtrSafe Function GetVolumeInformation Lib "kernel32" _
    Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long
    #Else
    Private Declare Function GetVolumeInformation Lib "kernel32" _
    Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long
    #End If

    Public Function FuncaoDriveSerialNumber(strDrive As String) As String
    'Para obter o numero de serie do HD
    'Na janela imediata digite: ?FuncaoDriveSerialNumber("c")
    Dim x As Long, lngSerialNum As Long
    Dim strRoot As String
    strRoot = Left$(strDrive, 1) & ":\"
    x = GetVolumeInformation(strRoot, "", 255, lngSerialNum, 0, 0, "", 255)
    FuncaoDriveSerialNumber = Hex$(lngSerialNum)
    End Function

    Parabéns pela alta qualidade do fórum! Passei a madrugada toda lendo muita coisa interessante aqui e assistindo excelentes vídeos!

    Sucesso a todos!

    Abraços!

    André Basílio.

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Serial do HD

    Mensagem  JPaulo em Qua 05 Set 2012, 11:23

    Obrigado pelo retorno o fórum agradece.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    paulocoob
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 06/05/2011

    Re: [Resolvido]Serial do HD

    Mensagem  paulocoob em Sab 16 Fev 2013, 17:35

    Opa tive o mesmo problema com um comando.
    A solução de usar #If VBA7 caiu como uma luva. Ótimo post. Me ajudou muito. Obrigado

    DouglasTSL
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 07/01/2014

    Re: [Resolvido]Serial do HD

    Mensagem  DouglasTSL em Ter 07 Jan 2014, 13:24

    Onde que altero esse cod, estou com o mesmo erro! obrigadoo

    J.Silas
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 31/05/2013

    exemplo

    Mensagem  J.Silas em Ter 07 Jan 2014, 14:36

    um exemplo com ajuda de exemplos do forum
    [Você precisa estar registrado e conectado para ver este link.]

    só achei um ponto fraco caso o cliente formate o PC o serial do HD muda se alguém tiver uma solução eu agradeço.

    cemsinformatica
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 23/11/2012

    NUMERO DO HD

    Mensagem  cemsinformatica em Sex 13 Nov 2015, 11:01

    Bom dia
    Retiraram do site o link do exemplo de como verificar o numero do hd
    Voce tem como disponibilizar novamente ??

      Data/hora atual: Sex 09 Dez 2016, 07:43