Foxtable(狐表)用户栏目专家坐堂 → 一个帐号同时在不同电脑上登录,退出系统的问题


  共有4456人关注过本帖树形打印复制链接

主题:一个帐号同时在不同电脑上登录,退出系统的问题

帅哥哟,离线,有人找我吗?
小猪鑫鑫
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
一个帐号同时在不同电脑上登录,退出系统的问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2014/3/25 14:04:00 [只看该作者]

呵呵,谢谢Bin老师,很好的想法,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/3/25 14:41:00 [只看该作者]

楼主做的复杂了点。

 

登录后在登录表中写入ComputerId

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


 回到顶部
帅哥哟,离线,有人找我吗?
kunmails
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:372 积分:3213 威望:0 精华:0 注册:2013/5/6 10:15:00
  发帖心情 Post By:2014/3/25 17:02:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2014/3/25 19:45:00 [只看该作者]

谢谢4楼Isy老师,我觉得您的意见更简单一些,谢谢指点!

 回到顶部
帅哥哟,离线,有人找我吗?
nmamtf
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:644 威望:0 精华:0 注册:2019/5/1 18:38:00
  发帖心情 Post By:2019/5/2 20:03:00 [只看该作者]

学习了。

 回到顶部