処理は簡単。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 |