【开源项目】花密(Flower Password)VB版之密码输入框保护模块

'*****************************************************************
' Copyright (c) 2011-2012 FlowerPassword.com All rights reserved.
'      Author : xLsDg @ Xiao Lu Software Development Group
'        Blog : http://hi.baidu.com/xlsdg
'          QQ : 4 4 7 4 0 5 7 4 0
'     Version : 1 . 0 . 0 . 0
'        Date : 2 0 1 2 / 0 4 / 0 7
' Description :
'     History :
'*****************************************************************
Option Explicit

Private Declare Function GetWindowLong _
                Lib "user32.dll" _
                Alias "GetWindowLongA" (ByVal hwnd As Long, _
                                        ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong _
                Lib "user32.dll" _
                Alias "SetWindowLongA" (ByVal hwnd As Long, _
                                        ByVal nIndex As Long, _
                                        ByVal dwNewLong As Long) As Long

Private Declare Function CallWindowProc _
                Lib "user32.dll" _
                Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
                                         ByVal hwnd As Long, _
                                         ByVal Msg As Long, _
                                         ByVal wParam As Long, _
                                         ByVal lParam As Long) As Long

Private Const GWL_WNDPROC = (-4)

Private Const EM_GETPASSWORDCHAR = &HD2

Private Const WM_GETTEXT = &HD

Private Const WM_PASTE = &H302

Private Const WM_RBUTTONDOWN = &H204

Private Const WM_SETTEXT = &HC

Private Const WM_GETTEXTLENGTH = &HE

Private Const WM_COPY = &H301

Private Const WM_COPYDATA = &H4A

Private Const WM_CUT = &H300

Private Const EM_REPLACESEL = &HC2

Private preEditProc As Long

Public Function ProtectTextBox(ByVal TextBox_hWnd As Long) As Long
    preEditProc = GetWindowLong(TextBox_hWnd, GWL_WNDPROC)
    ProtectTextBox = SetWindowLong(TextBox_hWnd, GWL_WNDPROC, AddressOf EditProc)

End Function

Public Function UnProtectTextBox(ByVal TextBox_hWnd As Long) As Long
    UnProtectTextBox = SetWindowLong(TextBox_hWnd, GWL_WNDPROC, preEditProc)

End Function

Private Function EditProc(ByVal hwnd As Long, _
                          ByVal Msg As Long, _
                          ByVal wParam As Long, _
                          ByVal lParam As Long) As Long

    If Msg = WM_GETTEXT Or Msg = EM_GETPASSWORDCHAR Or Msg = WM_COPY Or Msg = WM_PASTE Or Msg = WM_RBUTTONDOWN Or Msg = WM_CUT Then
        'hwnd = FrmMain.txtKey.hwnd
        EditProc = True
        Exit Function

    End If

    EditProc = CallWindowProc(preEditProc, hwnd, Msg, wParam, lParam)

End Function



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值