● テキストボックスのパスワードマスク(*)の皮を剥ぐ ●

ダウンロード (9KB)

処理は簡単。SendMessage API 関数で EM_SETPASSWORDCHAR を送信する際、wParam に 0 を指定するとパスワードマスク属性が無効になる。ということで、さっさとテキストボックスのウィンドウハンドルを拾っちゃいましょう。メイン処理は以下の通りで、非常に簡単です。

'---------------------------------------------------------------
' 機  能:マウスカーソル直下のウィンドウのハンドルを取得する
' 引  数:なし
' 返り値:マウスカーソル直下のウィンドウのハンドル
'---------------------------------------------------------------
Private Function GetHandleUnderCursor()
    Dim udtPoint As POINTAPI
    Dim hTarget As Long

    'マウスカーソル位置を取得する
    Call GetCursorPos(udtPoint)

    'マウスカーソル位置のウィンドウハンドルを取得する
    GetHandleUnderCursor = WindowFromPoint(udtPoint.X, udtPoint.Y)

End Function

'---------------------------------------------------------------
' 機  能:パスワードマスク(*)の皮を剥ぐ
' 引  数:なし
' 返り値:なし
'---------------------------------------------------------------
Public Sub GetPassword()
    Dim hTarget As Long

    '3秒待つ
    Call Sleep(3000)

    '何となく再描画
    DoEvents

    'マウスカーソル直下のウィンドウのハンドルを取得する
    hTarget = GetHandleUnderCursor

    'ウィンドウハンドルを取得できなかった場合は終了
    If hTarget = 0 Then Exit Sub

    'EM_SETPASSWORDCHAR送信
    Call PostMessage(hTarget, EM_SETPASSWORDCHAR, 0, ByVal 0&)

    '再描画
    Call InvalidateRect(hTarget, ByVal 0&, True)
End Sub


戻る