建一个登录管理表,包含登录用户、电脑名称、登录地址、登录时间、机器码(如果需要注册才能登录)、异机登录,每次登录都先从表中查找是否有同名登录用户,若无则添加记录,若有(属于不正常退出)且属本机登录,则不添加记录,只修改登录时间,若属异机登录则在异机登录中填写“是”。每次退出、切换用户都删除登录记录。
' 判断同名用户是否已经登录,并作相应处理
Dim HostName As String
HostName=System.Net.Dns.GetHostName '获得本机的机器名
Dim IPAdress As System.Net.IPAddress
IPAdress=System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP
Dim dt2 As Date
cmd.CommandText = "Select GetDate()"
dt2 = cmd.ExecuteScalar()'服务器的日期和时间
With DataTables("登录管理")
dr0 = .Find("登录用户= '" & _username & "'") '_Username为自定义登录时的用户名
' 已登录的处理
If dr0 IsNot Nothing Then
Dim name As String=dr0("电脑名称")
If name<>hostname Then '异机登录
Dim IP As String=dr0("登录地址")
Dim rq As Date=dr0("登录时间")
MessageBox.Show("该用户已异机登录, 请确认或联系管理员或开发者!" & vbcrlf & "其电脑名称是 " & name & vbcrlf & "其登录地址是 " & IP & vbcrlf & "其登录时间是 " & rq,"警告",MessageBoxButtons.ok,MessageBoxIcon.warning)
e.Form.Close
dr0("异机登录")="是"
dr0 = .AddNew()
dr0("登录用户")=_username
dr0("电脑名称")=HostName
dr0("登录地址")=IPAdress.ToString
dr0("登录时间")=dt2
dr0("机器码")=computerId
dr0("异机登录")="是"
.save()
syscmd.project.Exit(True)
Else
dr0("登录地址")=IPAdress.ToString
dr0("登录时间")=dt2
.save()
End If
Else
'未登录的处理
dr0 = .AddNew()
dr0("登录用户")=_username
dr0("电脑名称")=HostName
dr0("登录地址")=IPAdress.ToString
dr0("登录时间")=dt2
dr0("机器码")=computerId
.save()
End If
End With
Dim i As Integer
' 在退出系统的菜单按钮代码前和关闭项目事件前的代码中用到下列代码,以保证用户登录记录删除成功
'MainTable=Tables("登录管理")
'With CurrentTable
' i = .Findrow("登录用户= '" & _username & "'",0,False)
' If i>-1 andalso .rows(i)("异机登录") ="" Then
' .Rows(i).Delete()
' DataTables("登录管理").save() '在登录窗口的"退出"按钮中也要增加该保存命令
' End If
'End With