This code shows a simple way of 'hooking' modal windows (MsgBox or InputBox) and changing their behavior.

VB Code:
  1. 'PUT BELOW DECLARATIONS IN A .BAS MODULE
  2.  
  3. Option Explicit
  4.  
  5. Private Declare Function FindWindow Lib "user32" Alias _
  6.    "FindWindowA" (ByVal lpClassName As String, _
  7.    ByVal lpWindowName As String) As Long
  8.  
  9. Private Declare Function FindWindowEx Lib "user32" Alias _
  10.   "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
  11.    ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  12.    
  13. Public Declare Function SetTimer& Lib "user32" _
  14.   (ByVal hwnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal _
  15.    lpTimerFunc&)
  16.  
  17. Private Declare Function KillTimer& Lib "user32" _
  18.   (ByVal hwnd&, ByVal nIDEvent&)
  19.  
  20. Private Declare Function SendMessage Lib "user32" Alias _
  21.     "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
  22.     ByVal wParam As Long, lParam As Any) As Long
  23.  
  24. Const EM_SETPASSWORDCHAR = &HCC
  25. Public Const NV_INPUTBOX As Long = &H5000&
  26.  
  27. Public Sub TimerProc(ByVal hwnd&, ByVal uMsg&, _
  28.    ByVal idEvent&, ByVal dwTime&)
  29.  
  30.     Dim EditHwnd As Long
  31.  
  32. ' CHANGE APP.TITLE TO YOUR INPUT BOX TITLE.
  33.  
  34.     EditHwnd = FindWindowEx(FindWindow("#32770", App.Title), _
  35.        0, "Edit", "")
  36.  
  37.     Call SendMessage(EditHwnd, EM_SETPASSWORDCHAR, Asc("*"), 0)
  38.     KillTimer hwnd, idEvent
  39. End Sub
  40.  
  41. 'THIS IS HOW TO USE THE CODE FROM WITHIN A FORM
  42.  
  43. Private Sub Command1_Click()
  44.   Dim ret As String
  45.   SetTimer hwnd, NV_INPUTBOX, 10, AddressOf TimerProc
  46.   ret = InputBox("Enter Password")
  47. End Sub