Quantcast
Channel: VBForums - CodeBank - Visual Basic 6 and earlier
Viewing all articles
Browse latest Browse all 1529

InputBox With Password mask,Get screen coordinate position of the input box

$
0
0
You can specify the display position of the input dialog or message box when it starts.
After manually moving to the new position, the last position will be remembered, and the new dialog box will be displayed in the same coordinate position.

Code:

Private Sub Form_Load()
InputX = 300 * Screen.TwipsPerPixelX
InputY = 500 * Screen.TwipsPerPixelY
End Sub

Private Sub Command1_Click()
  Dim S As String
  S = InputboxXY("Please Input Your Password", , True, "Tip Info", InputX, InputY)
  MsgBox "S=" & S
End Sub


Code:

Public InputX As Long, InputY As Long
Dim PassMode As Boolean
Dim FindInput As Boolean, InputTitle As String
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Dim lngTimerID As Long
Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public 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 Const EM_SETPASSWORDCHAR = &HCC

Function InputboxXY(Optional Title As String, Optional Default As String, Optional PassModeA As Boolean, Optional Prompt As String, Optional XPos, Optional YPos)
    If Title = "" Then Title = App.Title
    InputTitle = Title
    FindInput = False
    PassMode = PassModeA
    lngTimerID = SetTimer(0, 0, 15, AddressOf TimerProc)
    If InputX > 0 Then XPos = InputX: YPos = InputY
    If IsMissing(XPos) Then
            InputboxXY = InputBox(Prompt, Title, Default)
    Else
            InputboxXY = InputBox(Prompt, Title, Default, XPos, YPos)
    End If
End Function
Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
    Static Rect1 As RECT
    Dim win As Long, InputHwd As Long
    win = FindWindow(vbNullString, InputTitle)
    If win > 0 Then
            If IsWindowVisible(win) Then
                    If FindInput = False Then
                        FindInput = True
                        If PassMode Then
                              InputHwd = FindWindowEx(win, 0, "edit", vbNullString)
                              SendMessage InputHwd, EM_SETPASSWORDCHAR, 42, 0
                        End If
                    End If
                    GetWindowRect win, Rect1
        End If
  ElseIf FindInput Then
            KillTimer 0, lngTimerID
            InputX = Rect1.Left * Screen.TwipsPerPixelX
            InputY = Rect1.Top * Screen.TwipsPerPixelY
    End If
End Sub


Viewing all articles
Browse latest Browse all 1529

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>