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


2 participantes

    Abrindo um formulário do Access 2010 com senha.

    avatar
    Marcos Brandão
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 26/07/2013

    Abrindo um formulário do Access 2010 com senha. Empty Abrindo um formulário do Access 2010 com senha.

    Mensagem  Marcos Brandão 19/11/2013, 23:51

    Boa noite pessoal!

    Gilberlanio me passou o código abaixo para eu poder abrir um formulário com senha. Quando eu aplico dá um erro de compilação dizendo que o meu sistema é de 64bits e o código precisa ser adaptado.

    Como eu resolvo isso. Preciso que funcione nos dois sistemas tanto de 32bits como de 64bits.

    Alguém pode me ajudar.

    Desde já agradeço.

    1º crie um módulo e cole o código abaixo dentro e salve o módulo com o nome de Senha_inputboxdk

    Option Compare Database

    '////////////////////////////////////////////////////////////////////
    'Password masked inputbox
    'Allows you to hide characters entered in a VBA Inputbox.
    '
    'Code written by Daniel Klann
    'http://www.danielklann.com/
    'March 2003

    '// Kindly permitted to be amended
    '// Amended by Ivan F Moala
    '// http://www.xcelfiles.com
    '// April 2003
    '// Works for Xl2000+ due the AddressOf Operator
    '////////////////////////////////////////////////////////////////////

    'API functions to be used
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
    ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" ( _
    ByVal lpModuleName As String) As Long

    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ( _
    ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) _
    As Long

    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

    Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" ( _
    ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _
    ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

    Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

    'Constants to be used in our API functions
    Private Const EM_SETPASSWORDCHAR = &HCC
    Private Const WH_CBT = 5
    Private Const HCBT_ACTIVATE = 5
    Private Const HC_ACTION = 0

    Private hHook As Long

    Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Dim RetVal
    Dim strClassName As String, lngBuffer As Long

    If lngCode < HC_ACTION Then
    NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
    Exit Function
    End If

    strClassName = String$(256, " ")
    lngBuffer = 255

    If lngCode = HCBT_ACTIVATE Then 'A window has been activated
    RetVal = GetClassName(wParam, strClassName, lngBuffer)
    If left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox
    'This changes the edit control so that it display the password character *.
    'You can change the Asc("*") as you please.
    SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
    End If
    End If

    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam

    End Function

    '// Make it public = avail to ALL Modules
    '// Lets simulate the VBA Input Function
    Public Function InputBoxDK(Prompt As String, Optional Title As String, Optional Default As String, _
    Optional Xpos As Long, Optional Ypos As Long, Optional Helpfile As String, _
    Optional Context As Long) As String

    Dim lngModHwnd As Long, lngThreadID As Long

    '// Lets handle any Errors JIC! due to HookProc> App hang!
    On Error GoTo ExitProperly
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)

    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    If Xpos Then
    InputBoxDK = InputBox(Prompt, Title, Default, Xpos, Ypos, Helpfile, Context)
    Else
    InputBoxDK = InputBox(Prompt, Title, Default, , , Helpfile, Context)
    End If

    ExitProperly:
    UnhookWindowsHookEx hHook

    End Function



    2º - Cole isso no evento ao abrir do seu formulário:

    Dim UsrResposta
    UsrResposta = InputBoxDK("Digete a senha", "Senha requerida")
    'A mensagem acima entre os parênteses pode ser alterada
    If UsrResposta = "123" Then 'este valor entre parenteses é a senha
    Else
    MsgBox "Senha incorreta", vbCritical, "Senha incorreta"
    Cancel = -1
    'aqui a mensagem de senha incorreta. Pode alterar
    End If
    End If
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Abrindo um formulário do Access 2010 com senha. Empty Re: Abrindo um formulário do Access 2010 com senha.

    Mensagem  Avelino Sampaio 20/11/2013, 06:52

    Olá!

    Você precisa adaptar as APIs para que funcione no Access 2010/2013 versões de 32 e 64 bits.  Deverá utilizar a condicional #IF para manter as duas versões de API no mesmo código.

    Baixe o arquivo que se encontra no meu artigo abaixo, que contem centenas de APIs adaptadas para as versões do Access 2010/2013 de 32 e 64 bits

    http://www.usandoaccess.com.br/tutoriais/tuto28.asp?id=1#inicio

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.

      Data/hora atual: 21/11/2024, 15:20