crysostomo 27/1/2018, 04:11
amigo, boa noite, peguei esse código aqui, estudei ele, mas não entendi o ponto do código comparar se o HD das maquinas é igual da maquina aonde coloquei o programa, para que não haja cópias.
Private Sub Form_Load()
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