第一个问题很简单,可以定义一个全局变量来解决,假设定义一个变量为blnTemp,表示是否正在进行询问密码处理,初始为False。第一次进入密码输入前将其设为TRUE,输入完后将其设置为FALSE,每次进入密码输入前先判断该变量是否为TRUE,如果是则不进行密码输入。
第二个问题试试在ChkPwd = VerifyScreenSavePwd(Me.hwnd)语句后加一句DoEvents
第二个问题试试在ChkPwd = VerifyScreenSavePwd(Me.hwnd)语句后加一句DoEvents
Public Declare Function VerifyScreenSavePwd Lib "password.cpl" (ByVal hwnd&) As BooleanPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Static XLast, YLast As Single
Dim XNow, YNow As Single
XNow = x
YNow = y
If XLast = 0 And YLast = 0 Then
XLast = XNow
YLast = YNow
Exit Sub
End If
If Abs(XNow - XLast) > 5 Or Abs(YNow - YLast) > 5 Then
InCheck = True
Unload Me
End If
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If InCheck = False Then Exit Sub
ChkPwd = VerifyScreenSavePwd(Me.hwnd)
If ChkPwd Then
……
……
End
Else
Cancel = True
End If
InCheck = False
End Sub在密码框中按下取消按钮后,密码框仍不消失,仍是不断重复询问密码。
建议各位将以上代码粘贴到一个窗体中帮忙调试一下,谢谢!2.这个方法无效!
1.只需在修改后的Form_MouseMove中的Unload Me之前添加xLast=0:yLast=0即可解决。
2.已经验证,使用多线程能解决!