MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    [Resolvido]Limitar uso

    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Limitar uso

    Mensagem  wvsilva 9/7/2010, 18:23

    Boa Tarde a todos.
    Tenho uma duvida.
    Gostaria de saber se tem como eu limitar o uso do meu programa em um determinado computador.
    E se teria como fazer que o sistema busque o numero do ip dele e fique a mostra no sistema.
    Desde ja agradeço a ajuda
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 19:11

    Olá de novo

    O Mestre JPaulo tem aqui no fórum um exemplo fantástico. Mas talvez você tenha alguma dificuldade em implementar.

    1- Crie um ficheiro de texto vazio

    2- Com o botão direto do rato vá a propriedades e escolha alterar nome e digite:

    XJPXLMS.DLL o programa vai perguntar se pretende alterar a extensão.

    3- Cloque essa DLL no Windows System32

    Volte ao seu programa e crie um form (formulário1) em modo oculto e escreva o seguinte código

    Private Sub Form_Open(Cancel As Integer)
    If Len(Dir("C:\Windows\System32\XJPXLMS.DLL.DLL")) Then
    DoCmd.Close
    DoCmd.OpenForm "frm1"
    Else
    Call MsgBox("Lamentamos mas esta é uma cópia não autorizada." & vbCrLf & "O programa pode ter sido copiado de outro computador" & vbCrLf & "Se não foi, contacte-me imediatamente!", vbExclamation, "seunome")
    Application.Quit
    End If
    End Sub

    Quando o programa abrir no form de abertura faça a chamada ao formulário1. Este irá verificar se a DLL existe, se existir o programa prossegue, se não existir a mensagem aparece e o programa fecha.



    Este é o exemplo do Mestre descrito passo a passo
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  criquio 9/7/2010, 19:46

    Não está faltando um > 0 não? Não vi a função em ação, estou só perguntando, rsrsrs.

    If Len(Dir("C:\Windows\System32\XJPXLMS.DLL.DLL")) > 0 Then


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 20:00

    Olá Moderador Criquio, seus alertas são sempre bem vindos, mas neste caso o código é tal e qual foi retirado do Mestre. O único erro que eu vejo foi ter repetido DLL 2 vezes e pode induzir em erro:


    Private Sub Form_Open(Cancel As Integer)
    If Len(Dir("C:\Windows\System32\XJPXLMS.DLL")) Then
    DoCmd.Close
    DoCmd.OpenForm "frm1"
    Else
    Call MsgBox("Lamentamos mas esta é uma cópia não autorizada." & vbCrLf & "O programa pode ter sido copiado de outro computador" & vbCrLf & "Se não foi, contacte-me imediatamente!", vbExclamation, "seunome")
    Application.Quit
    End If
    End Sub

    De qualquer forma agradeço a sua intervenção. Estou usando assim numa aplicação e se retirar a DLL do System32 o programa dá erro, portanto tudo parece funcionar bem.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 20:42

    WSilva pelos vistos você faz 2 perguntas no mesmo tópico e eu só lhe respondi a uma. Você quer saber o IP:

    Abra um Módulo e copie o código (mantenha os créditos de quem o criou p.f.)
    Option Compare Database

    Option Explicit

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Copyright ©1996-2009 VBnet, Randy Birch, All Rights Reserved.
    ' Some pages may also contain other copyrights by the author.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Distribution: You can freely use this code in your own
    ' applications, but you may not reproduce
    ' or publish this code on any web site,
    ' online service, or distribute as source
    ' on any media without express permission.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Public Const MAX_WSADescription As Long = 256
    Public Const MAX_WSASYSStatus As Long = 128
    Public Const ERROR_SUCCESS As Long = 0
    Public Const WS_VERSION_REQD As Long = &H101
    Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Public Const MIN_SOCKETS_REQD As Long = 1
    Public Const SOCKET_ERROR As Long = -1

    Public Type HOSTENT
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLen As Integer
    hAddrList As Long
    End Type

    Public Type WSADATA
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Integer
    wMaxUDPDG As Integer
    dwVendorInfo As Long
    End Type

    Public Declare Function WSAGetLastError Lib "wsock32" () As Long

    Public Declare Function WSAStartup Lib "wsock32" _
    (ByVal wVersionRequired As Long, _
    lpWSADATA As WSADATA) As Long

    Public Declare Function WSACleanup Lib "wsock32" () As Long

    Public Declare Function gethostname Lib "wsock32" _
    (ByVal szHost As String, _
    ByVal dwHostLen As Long) As Long

    Public Declare Function gethostbyname Lib "wsock32" _
    (ByVal szHost As String) As Long

    Public Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" _
    (hpvDest As Any, _
    ByVal hpvSource As Long, _
    ByVal cbCopy As Long)


    Public Function GetIPAddress() As String

    Dim sHostName As String * 256
    Dim lpHost As Long
    Dim HOST As HOSTENT
    Dim dwIPAddr As Long
    Dim tmpIPAddr() As Byte
    Dim i As Integer
    Dim sIPAddr As String

    If Not SocketsInitialize() Then
    GetIPAddress = ""
    Exit Function
    End If

    'gethostname returns the name of the local host into
    'the buffer specified by the name parameter. The host
    'name is returned as a null-terminated string. The
    'form of the host name is dependent on the Windows
    'Sockets provider - it can be a simple host name, or
    'it can be a fully qualified domain name. However, it
    'is guaranteed that the name returned will be successfully
    'parsed by gethostbyname and WSAAsyncGetHostByName.

    'In actual application, if no local host name has been
    'configured, gethostname must succeed and return a token
    'host name that gethostbyname or WSAAsyncGetHostByName
    'can resolve.
    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPAddress = ""
    MsgBox "Windows Sockets error " & str$(WSAGetLastError()) & _
    " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    'gethostbyname returns a pointer to a HOSTENT structure
    '- a structure allocated by Windows Sockets. The HOSTENT
    'structure contains the results of a successful search
    'for the host specified in the name parameter.

    'The application must never attempt to modify this
    'structure or to free any of its components. Furthermore,
    'only one copy of this structure is allocated per thread,
    'so the application should copy any information it needs
    'before issuing any other Windows Sockets function calls.

    'gethostbyname function cannot resolve IP address strings
    'passed to it. Such a request is treated exactly as if an
    'unknown host name were passed. Use inet_addr to convert
    'an IP address string the string to an actual IP address,
    'then use another function, gethostbyaddr, to obtain the
    'contents of the HOSTENT structure.
    sHostName = Trim$(sHostName)
    lpHost = gethostbyname(sHostName)

    If lpHost = 0 Then
    GetIPAddress = ""
    MsgBox "Windows Sockets are not responding. " & _
    "Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    'to extract the returned IP address, we have to copy
    'the HOST structure and its members
    CopyMemory HOST, lpHost, Len(HOST)
    CopyMemory dwIPAddr, HOST.hAddrList, 4

    'create an array to hold the result
    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

    'and with the array, build the actual address,
    'appending a period between members
    For i = 1 To HOST.hLen
    sIPAddr = sIPAddr & tmpIPAddr(i) & "."
    Next

    'the routine adds a period to the end of the
    'string, so remove it here
    GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)

    SocketsCleanup

    End Function


    Public Function GetIPHostName() As String

    Dim sHostName As String * 256

    If Not SocketsInitialize() Then
    GetIPHostName = ""
    Exit Function
    End If

    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPHostName = ""
    MsgBox "Windows Sockets error " & str$(WSAGetLastError()) & _
    " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
    SocketsCleanup

    End Function


    Public Function HiByte(ByVal wParam As Integer) As Byte

    'note: VB4-32 users should declare this function As Integer
    HiByte = (wParam And &HFF00&) \ (&H100)

    End Function


    Public Function LoByte(ByVal wParam As Integer) As Byte

    'note: VB4-32 users should declare this function As Integer
    LoByte = wParam And &HFF&

    End Function


    Public Sub SocketsCleanup()

    If WSACleanup() <> ERROR_SUCCESS Then
    MsgBox "Socket error occurred in Cleanup."
    End If

    End Sub

    Public Function SocketsInitialize() As Boolean

    Dim WSAD As WSADATA
    Dim sLoByte As String
    Dim sHiByte As String

    If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
    MsgBox "The 32-bit Windows Socket is not responding."
    SocketsInitialize = False
    Exit Function
    End If


    If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
    MsgBox "This application requires a minimum of " & _
    CStr(MIN_SOCKETS_REQD) & " supported sockets."

    SocketsInitialize = False
    Exit Function
    End If


    If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
    (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
    HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then

    sHiByte = CStr(HiByte(WSAD.wVersion))
    sLoByte = CStr(LoByte(WSAD.wVersion))

    MsgBox "Sockets version " & sLoByte & "." & sHiByte & _
    " is not supported by 32-bit Windows Sockets."

    SocketsInitialize = False
    Exit Function

    End If


    'must be OK, so lets do it
    SocketsInitialize = True

    End Function

    Agora cloque uma caixa de texto no seu form e no evento "Valor Pré Definido" da caixa de texto, coloque o seguinte:=GetIPAddress()

    E pronto! Desculpe não me ter apercebido antes, mas normalmente deve fazer-se uma pergunta de cada vez, pois este tópico pode passar despercebido a outros colegas que dele necessitem.

    Também pedia ao Administrador que movesse este tópico para Módulos e VBA pois parece-me ser o lugar certo para ele.
    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  wvsilva 9/7/2010, 21:20

    Desculpa pela pergunta.
    Coloquei os creditos de quem criou.
    Eu abri este topico depois foi que eu vi que estava no local errado.
    Por favor Administrador mova este topico.
    Obrigado pela ajuda Viera
    Grato
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 21:26

    Não tem mal, mas devemos explorar um tópico de cada vez , assim damos oportunidade a que todos possam partilhar das respostas e outros aproveitarem as respostas. Não esqueça de dar feedback, isto é referenciar se a najuda funcionou ou não, se conseguiu atingir o seu objectivo.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  criquio 9/7/2010, 21:26

    Movido para o local apropriado


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  wvsilva 9/7/2010, 21:37

    Uma duvida viera.
    Eu tenho a dll no meu pc so que da a mensagem de erro.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 21:39

    Você colocou a DLL no Windows system32?
    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  wvsilva 9/7/2010, 21:44

    SIM A DL ESTA NA PASTA SYSTEM32
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 21:46

    Fiz agora um teste numa aplicação minha e funfou direitinho. A extensão que criou foi DLL ou DL esra última está mal.
    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  wvsilva 9/7/2010, 21:49

    Foi Dll como esta no topico
    Deste jeito XJPXLMS.DLL
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 21:58

    Vou-lhe enviar o meu formulário1 via dropbox para você testar. Aqui funfa direito. Se tirar a DLL do system32 aparece logo a mensagem e o programa encerra. Se a voltar a por tudo funciona bem. Vou-lhe Criar aqui a DLL e vai junto.

    Posto já aqui o link
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 22:09

    Então faça o seguinte:

    Copie o formulário1 para dentro da sua aplicação. No seu formulário de abertura coloque o seguinte código: DoCmd.Close
    DoCmd.OpenForm "Formulário1"

    Se quizer substitua a sua DLL por esta e teste.


    http://dl.dropbox.com/u/8157744/WExemplo.zip
    wvsilva
    wvsilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 13/06/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  wvsilva 9/7/2010, 22:22

    Viera
    Sabe qual era o problema.
    No diretorio consta dll.dll
    So foi retirar um dll e o sistema funcionou.
    Obrigado pelos exemplos
    Topico resolvido
    Atendeu todas as minhas duvidas.
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 22:28

    Quando o Moderador Criquio fez a observação eu dei pelo erro e postei de novo. Fico contente que tudo tenha sido resolvido.

    Se preciasar já sabe
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  criquio 9/7/2010, 22:34

    Amigo Vieira, só tem um porem: você colocou o nome da dll trocado no código, rsrsrs.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  vieirasoft 9/7/2010, 22:40

    A DLL no código era a original que o WSilva tinha no sistema se não estou em erro. Se ele quizesse trocar pela que enviei tinha que alterar. Pelos vistos não trocou. De qualquer forma o Moderador tem razão porque não referenciei isso, Mas tudo correu bem.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  criquio 2/7/2011, 14:51

    Estava faltando o Resolvido.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


    Conteúdo patrocinado


    [Resolvido]Limitar uso Empty Re: [Resolvido]Limitar uso

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 12:44