首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

自动logout怎么实现

2013-07-04 
自动logout如何实现CS结构,当程序10分钟没有操作,自动logout如何实现?参考一下代码。谢谢。最好提供VB.NET[

自动logout如何实现
CS结构,当程序10分钟没有操作,自动logout如何实现?参考一下代码。谢谢。最好提供VB.NET
[解决办法]
这个不是太简单了吗?如下操作:
1 定义一个时间变量,进行任何操作就赋值为当前时间。
2 放一个timer,考虑到效率就每10秒运行一次吧,判断上面的变量值是否是十分钟前了,如果是,logout

[解决办法]
程序重启:
Application.restart
回到登录界面,重新登录!
[解决办法]
监控,其实很简单,要在程序有操作,就记录最后一次操作时间,然后 这个时间和现在时间比对。超过你设定的时间长度就 退出咯。
监控每个窗体的所有触发事件。 WinForm的所有Messgage,包括点击鼠标,移动鼠标等。
[解决办法]
你可以看看这篇文章。
http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html
他是讲解Cache对象的。
这个对象有一个过期通知功能。
按照你的要求,可以在登录是创建一个Cache对象,设置过期时间为你需要的时间。当每次操作的时候都去设置改对象的值,如果不在操作,等过了你的设置时间后会自动删除,这个时候会有一个删除通知的委托。正好实现你的自动logout。
[解决办法]

 Protected Overrides Sub WndProc(ByRef m As Message)
        If m.Msg = WM_REFLECT + WM_COMMAND Then
            If HIWORD(CType(m.WParam, Integer)) = CBN_DROPDOWN Then
                ShowDropDown()
                Return
            End If
        End If
        MyBase.WndProc(m)
    End Sub

‘---
m.Msg 是windows的系统消息,包括一切消息。肯定满足你所要的鼠标,键盘动作。

[解决办法]


Imports System.Runtime.InteropServices
imports system.drawing

Public Class Form1
   
    private label1 as new lable()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'MsgBox(GetIdleTime())

        label1.location = new point(10,10)
        label1.size=new size(50,15)
        me.controls.add(label1) 

        Timer1.Interval = 5000
        timer1.enable = true //这里开始计时
    End Sub

    'using System.Runtime.InteropServices;

    <DllImport("user32.dll")> _
    Private Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Integer
    End Function

    <StructLayout(LayoutKind.Sequential)> _
    Friend Structure LASTINPUTINFO


        <MarshalAs(UnmanagedType.U4)> _
        Public cbSize As Integer
        <MarshalAs(UnmanagedType.U4)> _
        Public dwTime As Integer
    End Structure

    Private lastinput As New LASTINPUTINFO()

    '获取空闲时间,单位是秒
    Private Function GetIdleTime() As Integer
        lastinput.cbSize = Marshal.SizeOf(lastinput)
        lastinput.dwTime = 0
        If GetLastInputInfo(lastinput) <> 0 Then
            //这里是除1000,不除是以毫秒为单位
            Return (Environment.TickCount - lastinput.dwTime) / 1000
        End If
        Return 0
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'MsgBox(GetIdleTime())
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        label1.Text = GetIdleTime().ToString()
    End Sub
End Class

热点排行