Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ocultar Caracteres de Inputbox

Estas en el tema de Ocultar Caracteres de Inputbox en el foro de Visual Basic clásico en Foros del Web. Quiciera que me ayudaran tengo un inputbox donde digito una clave, pero quiciera que los caracteres no aparecieran sino unos asteriscos o otros caracteres. Espero ...
  #1 (permalink)  
Antiguo 10/01/2012, 16:06
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Ocultar Caracteres de Inputbox

Quiciera que me ayudaran tengo un inputbox donde digito una clave, pero quiciera que los caracteres no aparecieran sino unos asteriscos o otros caracteres. Espero me puedan colaborar.
  #2 (permalink)  
Antiguo 11/01/2012, 11:45
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Ocultar Caracteres de Inputbox

http://www.recursosvisualbasic.com.a...x-password.htm
  #3 (permalink)  
Antiguo 11/01/2012, 19:52
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

La verdad no fue muy claro el codigo que me suministraron ya que lo probe de varias formas pero no me funciono.
  #4 (permalink)  
Antiguo 12/01/2012, 00:37
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Ocultar Caracteres de Inputbox

Hola, no se lo que habrás hecho pero a este código (que desconocia) lo he copiado simplemente y funciona perfecto.

Revisa lo que estas haciendo y sigue los pasos que te indican porque es bastante sencillo, algo debes estar haciendo mal.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 15/01/2012, 19:24
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

No definitivamente no me funciono. Por favor pido que me expliquen por que soy muy novato y la verdad no he podido.

Última edición por juancarlosto; 15/01/2012 a las 19:49
  #6 (permalink)  
Antiguo 18/01/2012, 05:02
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

Por favor alguien me puede colaborar
  #7 (permalink)  
Antiguo 18/01/2012, 06:40
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Ocultar Caracteres de Inputbox

Hola, no es que no podamos colaborar, es que sinceramente me veo incapaz de explicarlo mejor que en el enlace, que por otra parte como te comentaba lo probé y funciona a la perfección.

Personalmente pienso que mas claro que seguir las instrucciones y copiar los códigos del ejemplo es dificil de conseguir.

Inténtalo nuevamente que algo debes estar copiando mal.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #8 (permalink)  
Antiguo 23/01/2012, 13:54
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

como les explique soy muy novato y la verdad no se si estoy realizando mal el proceso. No se que hacer.
  #9 (permalink)  
Antiguo 24/01/2012, 06:11
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Ocultar Caracteres de Inputbox

solo tienes que añadir un modulo bas y pegarle este codigo:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3.  
  4.  
  5.  
  6.  
  7. ' Declaraciones del Api
  8.  
  9. Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, _
  10.  
  11.                                         ByVal nIDEvent As Long) As Long
  12.  
  13.  
  14.  
  15. Private Declare Function SendMessageLongRef Lib "user32" _
  16.  
  17.         Alias "SendMessageA" ( _
  18.  
  19.         ByVal hwnd As Long, _
  20.  
  21.         ByVal wMsg As Long, _
  22.  
  23.         ByVal wParam As Long, _
  24.  
  25.         ByRef lParam As Long) As Long
  26.  
  27.  
  28.  
  29. Private Declare Function FindWindow Lib "user32" _
  30.  
  31.         Alias "FindWindowA" ( _
  32.  
  33.         ByVal lpClassName As String, _
  34.  
  35.         ByVal lpWindowName As String) As Long
  36.  
  37.                          
  38.  
  39. Private Declare Function FindWindowEx Lib "user32" _
  40.  
  41.         Alias "FindWindowExA" ( _
  42.  
  43.         ByVal hWnd1 As Long, _
  44.  
  45.         ByVal hWnd2 As Long, _
  46.  
  47.         ByVal lpsz1 As String, _
  48.  
  49.         ByVal lpsz2 As String) As Long
  50.  
  51.                          
  52.  
  53. Private Declare Function SetTimer Lib "user32" ( _
  54.  
  55.         ByVal hwnd As Long, _
  56.  
  57.         ByVal nIDEvent As Long, _
  58.  
  59.         ByVal uElapse As Long, _
  60.  
  61.         ByVal lpTimerFunc As Long) As Long
  62.  
  63.                          
  64.  
  65.                          
  66.  
  67. Private m_ASC As Long
  68.  
  69.  
  70.  
  71.  
  72.  
  73. Sub inputbox_Password(El_Form As Form, Caracter As String)
  74.  
  75.      
  76.  
  77.     m_ASC = Asc(Caracter)
  78.  
  79.      
  80.  
  81.     Call SetTimer(El_Form.hwnd, &H5000&, 100, AddressOf TimerProc)
  82.  
  83.  
  84.  
  85. End Sub
  86.  
  87.  
  88.  
  89.  
  90.  
  91. Private Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, _
  92.  
  93.                                                                 ByVal dwTime As Long)
  94.  
  95.          
  96.  
  97.     Dim Handle_InputBox As Long
  98.  
  99.      
  100.  
  101.     'Captura el handle del textBox del InputBox
  102.  
  103.     Handle_InputBox = FindWindowEx(FindWindow("#32770", App.Title), 0, "Edit", "")
  104.  
  105.                  
  106.  
  107.     'Le establece el PasswordChar
  108.  
  109.     Call SendMessageLongRef(Handle_InputBox, &HCC&, m_ASC, 0)
  110.  
  111.     'Finaliza el Timer
  112.  
  113.     Call KillTimer(hwnd, idEvent)
  114.  
  115.  
  116.  
  117. End Sub

Y donde muestras el inputbox desde tu codigo solo pon:

Dim Password as string

Call inputbox_Password(Me, "*")

PassWord = InputBox(" Ingrese el Password ", App.Title)

y tendras en la variable password el pass tecleado por el user

al menos eso he entendido yo, aunque no lo he probado

suerte
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #10 (permalink)  
Antiguo 27/01/2012, 17:51
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

No funciona con esas indicaciones
  #11 (permalink)  
Antiguo 28/01/2012, 00:37
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Ocultar Caracteres de Inputbox

Hola, si quieres que te ayudemos un poco mas, lo mejor es que digas lo que estas haciendo ya que no podemos jugar a ser adivinos.

Abriendo un formulario en blanco y siguiendo las instrucciones del otro post, o sea Copiar y Pegar, funciona a la perfeccion, por lo menos en VB6, en otra versión no tengo ni idea.

Un saludo
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #12 (permalink)  
Antiguo 30/01/2012, 10:23
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: Ocultar Caracteres de Inputbox

COMO BIEN TEN HAN DICHO krev16, Erbuson, Pkj El codigo de la pagina que te han proporcionado funciona a la perfeccion.

http://www.recursosvisualbasic.com.a...x-password.htm

Para probarlo sigue las siguientes instrucciones:

1-abres un formulario en blanco de visual basic 6 (Exe estandar).
2 . le das 2 clicks en el centro del formulario y borras las lineas que hay dentro las que dicen private sub form_load() y la de end sub.
3-vas a la pagina web donde esta el ejemplo y copias el contenido donde dice Codigo fuente en un formulario. OSEA desde option explicit hasta la linea 20 y lo pegas dentro del formulario en blanco.cierras la ventana del formulario.
4- didujas un command1 osea un boton al formulario.
5- En visual basic arriba en el menu le clicas a Proyecto y en el menu que se extiende le clickas en Agregar Modulo y cuando te salga el modulo le das abrir.
6-En la ventana del modulo copias desde la pagina web donde dice Código fuente en un Módulo BAS , desde option explicit hasta la linea 59 y lo pegas en esta ventana modulo que tienes abierta.y cierras la ventana.
7-en el menu visual basic le das a ejecutar iniciar y clicas sobre el boton.
  #13 (permalink)  
Antiguo 30/01/2012, 13:27
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

Pido mil disculpas por no haber explicado todo desde el comienzo. La aplicacion que estoy haciendo es desde Excel y la estoy probando como ustedes me explican pero no me funciona.
  #14 (permalink)  
Antiguo 30/01/2012, 15:35
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: Ocultar Caracteres de Inputbox

Hola encontre este codigo en internet para una macro en excel que abre una ventana inputbox con los caracteres asteriscos como tu quieres EN EL EJEMPLO SIGUIENTE LE HE LLAMADO A LA MACRO imputboxchar:

ABRE UNA MACRO EN EXCEL Y ESTE ES EL CODIGO PARA COPIAR EN LA MACRO QUE LE HE PUESTO DE NOMBRE imputboxchar:

------------------------------EJEMPLO PARA MACRO DE EXCEL---------------------

Cita:
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

Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _
Optional YPos, Optional HelpFile, Optional Context) As String
Dim lngModHwnd As Long, lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
UnhookWindowsHookEx hHook
End Function
Sub imputboxchar()
resultado = InputBoxDK("Hola introduce contraseña: ", "pasword")
MsgBox ("has escrito: " + resultado)
End Sub

NOTA: TAMBIEN FUNCIONA EN VB6.0 PONIENDO EL CODIGO EN UN MODULO BAS Y DESDE EL FORMULARIO LLAMAR A LA FUNCTION InputBoxDK

---------------------------PARA VISUAL BASIC 6.0-----------------------------

CODIGO EN EL MODULO BAS:



Cita:
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

Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _
Optional YPos, Optional HelpFile, Optional Context) As String
Dim lngModHwnd As Long, lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
UnhookWindowsHookEx hHook
End Function

CODIGO EN EL FORMULARIO:

Cita:
Private Sub Form_Load()
resultado = InputBoxDK("Introduce pasword: ", "pasword")
MsgBox ("has escrito: " + resultado)
End Sub

salu2 espero te sirva

Última edición por A.H.H; 30/01/2012 a las 17:03
  #15 (permalink)  
Antiguo 07/02/2012, 15:40
 
Fecha de Ingreso: enero-2012
Ubicación: Bogota
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Ocultar Caracteres de Inputbox

Efectivamente el codigo funciona correctamente en excel, como ejecuntando una macro. Pero cuando lo copio en el codigo de mi programa no me funciona. El imputbox se habilita por medio de un boton, el cual pide una contraseña y si es correcta cierra el formato y deja activa la hoja de excel. A continuacion copio los codigos que tengo en el boton.

Private Sub CommandButton6_Click()

If InputBox("Digite Password", "CLAVE DE CONFIGURACION") <> "780530" Then Exit Sub

Unload Me
Sheets("Archivo Plano").Select



End Sub

Y el codigo del form es el siguiente:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu Then Cancel = True


End Sub

Esto es lo que tengo, por favor ayudemen, si necesitan mas del codigo me informan.

Y gracias a todos los que me han ayudado.
  #16 (permalink)  
Antiguo 08/02/2012, 16:18
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: Ocultar Caracteres de Inputbox

Hola si has usado el ejemplo que te expuse anteriormente no deberias poner inputbox para comparar, sino el inputboxDk de la funcion osea el que termina en DK

OSEA

pones en el modulo de excel el codigo que te puse anteriormente y en el useform
en el boton para comparar:


Cita:
Private Sub CommandButton6_Click()
If InputBoxDK("Digite Password", "CLAVE DE CONFIGURACION") <> "780530" Then
MsgBox "PASWORD INCORRECTO"
'AQUI EL CODIGO SI EL PASWORD ES INCORRECTO'
Exit Sub

Else
MsgBox "PASWORD CORRECTO"
'AQUI EL CODIGO QUE SIGUE SI ES CORRECTO EL PASWORD'
End If


End Sub

Última edición por A.H.H; 08/02/2012 a las 16:51

Etiquetas: caracteres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.