搜档网
当前位置:搜档网 › 使用对话框输入密码

使用对话框输入密码

使用对话框输入密码
使用对话框输入密码

1-1使用对话框输入密码

使用InputBox 函数显示的对话框输入密码简单方便,但有个明显的缺陷,就是输入过程中不能用占位符显示密码,不够安全。借助API函数可以在输入密码过程中以占位符“*”号来显示密码,如下面的代码所示。

Public Declare Function FindWindo w Lib "user32" Alias "FindWind owA" (ByVal lpClassNa me As String, ByVal lpWindowN ame As String) As Long

Public Declare Function FindWindo wEx Lib "user32" Alias "FindWind owExA" (ByVal hWnd1As Long, ByVal hWnd2As Long, ByVal

lpsz1As String, ByVal

lpsz2As String) As Long

Public Declare Function SendMessa ge Lib "user32" Alias "SendMess ageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)As Long

Public Declare Function timeSetEv ent Lib "winmm.dl l"(ByVal uDelay As Long, ByVal uResoluti on As Long, ByVal lpFunctio n As Long, ByVal dwUser As Long, ByVal uFlags As Long)As Long

Public Declare Function timeKillE vent Lib "winmm.dl l"(ByVal uID As Long)As Long

Public Declare Function GetTickCo unt Lib "kernel32 "()As Long

Public Const

EM_SETPAS SWORDCHAR = &HCC

Public lTimeID As Long

Sub TimeProc( ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, ByVal dw1 As Long, ByVal dw2 As Long)

Dim hwd As Long

hwd = FindWindo w("#32770 ","密码")

If hwd<>0 Then

hwd= FindWindo wEx(hwd, 0, "edit", vbNullStr ing) SendMessa ge hwd, EM_SETPAS SWORDCHAR , 42, 0

timeKillE vent lTimeID

End If

End Sub

Sub Password( )

Dim Password As

Variant

lTimeID= timeSetEv ent(10, 0, AddressOf TimeProc, 1, 1) Password =

InputBox( "请输入密码:","密码")

If Password = "123456" Then MsgBox"密码正确!"

Else

MsgBox"密码错误!"

End If

End Sub 代码解析:Password 过程使用InputBox 函数显示一个输入密码的对话框,并且以占位符“*”号显示输入的密码。第1行到第8行代码,API函数声明。

第9行到第

17行代

码,TimeProc

过程是timeSetEv

ent的回调

函数,获

得对话框

句柄。

第18行到

第27行代

码,Password

过程显示

一个提示

用户输入

密码的对

话框。

运行Password

过程将显

示一个密

码输入

框,输入

的密码以

占位符“*

”号代

替,如图

75?2所示

图 75?2密码输入框

相关主题