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