Input Box

devisrin4's Avatar, Join Date: Jan 2007
Light Poster
hi guys

i have a situvation that i hvae to take password from the user for that i am using inputbox option to take password. the problem is if i use input box we can't mask the input text box as far i know. so do we hvae any other option without creating another form for that.

thank you
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
No I dont think in a direct way it should be possible but you can try out the following. It may work.

Try getting the handle to the input box and get the child controls and if you have the textbox try setting its property for masking.
pradeep's Avatar, Join Date: Apr 2005
Team Leader
It's possible!

Copy the following code to a module.

Code: VB
Option Explicit
 
 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
 
 Public Declare Function SetTimer& Lib "user32" (ByVal hwnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal lpTimerFunc&)
 
 Private Declare Function KillTimer& Lib "user32" (ByVal hwnd&, ByVal nIDEvent&)
 
 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
 Const EM_SETPASSWORDCHAR = &HCC
 Public Const NV_INPUTBOX As Long = &H5000&
 Public WindowTitle As String
 
 Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
     Dim EditHwnd As Long
     EditHwnd = FindWindowEx(FindWindow("#32770", WindowTitle), 0, "Edit", "")
     
     Call SendMessage(EditHwnd, EM_SETPASSWORDCHAR, Asc("$"), 0)
     KillTimer hwnd, idEvent
 End Sub
 
 Public Function PasswordInputbox(Prompt As String, Optional Title As String, Optional Default As String, Optional XPos As Long, Optional YPos As Long, Optional HelpFile As Long, Optional Context As Long) As String
     Dim ret As String
     If Title = "" Then
         WindowTitle = App.Title
     Else
         WindowTitle = Title
     End If
 
     SetTimer 0, 0, 1, AddressOf TimerProc
     PasswordInputbox = InputBox(Prompt, WindowTitle, Default, XPos, YPos, HelpFile, Context)
 End Function

Then, you may use it like this.

Code: VB
Dim a
     a = PasswordInputbox("Enter Password")
     ' example
     Label1.Caption = "Password entered : " & a


The project files are attached.
Attached Files
File Type: zip input-box passwd.zip (2.4 KB, 6 views)
Darkness1337's Avatar, Join Date: Mar 2007
Ambitious contributor
Thanx Pradeep! thats usefull