以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  一个帐号同时在不同电脑上登录,退出系统的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48221)

--  作者:小猪鑫鑫
--  发布时间:2014/3/25 13:58:00
--  一个帐号同时在不同电脑上登录,退出系统的问题

狐爸:现在在做一个人在不同电脑上登录,最先登录的电脑自动退出系统时遇到一点点问题,请指教

 

我在项目事件中有下面的代码,就是退出时确认一下是否真的退出

BeforeCloseProject

Dim Result As DialogResult

Result = Messagebox.Show("请问是否确定要退出琅日信息系统?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.No Then \'如果用户选择否

    e.Cancel = True \'取消关闭项目

Else

    e.skipsave =True

End If


 

然后我在计划管理中有下面的代码,就是判断一个人是否在不同电脑上同时登录

Dim IPAdress As System.Net.IPAddress

Dim HostName As String

HostName = System.Net.Dns.GetHostName \'获得本机的机器名

IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) \'获得本机的IP

 

Dim i As new SQLCommand

Dim ts As Integer

i.C

i.CommandText ="select count(工号) as 台数 from {SY用户登录表} where 工号 =\'" & _username & "\' and 状态 =\'在线\'"

ts =i.ExecuteScalar

output.show(_username)

output.show(ts)

If ts >=2

    Dim cmb As new SQLCommand

    cmb.C

    cmb.CommandText ="update {SY用户登录表} set 离线时间 =\'" & Vars("sqldt") & "\' ,状态 =\'离线\' where 工号 =\'" & _username & "\' and IP地址 =\'" & IPAdress.ToString & "\' and 状态 =\'在线\'"

    cmb.ExecuteNonQuery

    syscmd.project.Exit(False)

End If


 

现在的问题时,当系统监测到有人同时在不同电脑上登录时,它会执行计划管理中的代码,退出系统,但退出时它还是会执行这个BeforeCloseProject里面的代码,弹出“是与否”的对话框,需要人为处理才能退出系统,我想请问能不能直接退出,不要人为确认点击“是”,但这个BeforeCloseProject里面的代码还是需要保留的


--  作者:Bin
--  发布时间:2014/3/25 14:02:00
--  
添加一个全局变量  

计时器中为全局变量赋值

BeforeCloseProject

 if  全局变量=True then

Dim Result As DialogResult

Result = Messagebox.Show("请问是否确定要退出琅日信息系统?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.No Then \'如果用户选择否

    e.Cancel = True \'取消关闭项目

Else

    e.skipsave =True

End If

end if


--  作者:小猪鑫鑫
--  发布时间:2014/3/25 14:04:00
--  
呵呵,谢谢Bin老师,很好的想法,谢谢
--  作者:lsy
--  发布时间:2014/3/25 14:41:00
--  

楼主做的复杂了点。

 

登录后在登录表中写入ComputerId

计时器定时读取ComputerId,如果不是本机ComputerId,就退出。


--  作者:kunmails
--  发布时间:2014/3/25 17:02:00
--  
我在系统中设置了同一个账号不允许在不同电脑上登陆,新登陆时可以选择是否踢下上一个登陆,运用了2个表1个计时器,在登陆的时候往状态表中写一条登陆信息,包括IP,账号名,登陆时间,如果选择踢下上一个登陆那么就往命令表中写一条数据, 登陆后打开计时器,计时器每隔 10秒更新下登陆信息表,如果登陆信息表的中的时间超过10秒说明用户已经退出,计时器还读取命令表中的数据,判断是否需要退出系统,当用户登陆时判断是否继续如果继续就往命令表中写一条命令,然后另外的客户端10秒更新的时候发现这个命令就提示退出!登陆效果和QQ的判断差不多,不知道其他狐友有没有更好的想法!
[此贴子已经被作者于2014-3-25 17:08:07编辑过]

--  作者:小猪鑫鑫
--  发布时间:2014/3/25 19:45:00
--  
谢谢4楼Isy老师,我觉得您的意见更简单一些,谢谢指点!
--  作者:nmamtf
--  发布时间:2019/5/2 20:03:00
--  
学习了。