在C#中记录登录、注销、系统锁定/解锁事件并静默记录用户登录、注销和系统锁定/解锁事件。如果有人可以提示我记录他们的总空闲时间(用户未执行系统活动的时间),那就太好了我正在寻找一个预先开发的库或对我的项目有帮助的东西。试试下面的代码....以上是C#学习教程:记录C#登录、注销、系统锁定/解锁事件共享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—privateenumWTS{CONSOLE_CONNECT=1,CONSOLE_DISCONNECT=2,REMOTE_CONNECT=3,REMOTE_DISCONNECT=4,SESSION_LOGON=5,SESSION_LOGOFF=6,SESSION_LOCK=7,SESSION_UNLOCK=8,SESSION_REMOTE_CONTROL=9}protectedoverridevoidWndProc(refSystem.Windows.Forms.Messagem){switch(m.Msg){caseWM_WTSSESSION_CHANGE:switch(m.WParam.ToInt32){案例WTS.CONSOLE_CONNECT://MessageBox.Show("一个会话已连接到控制台会话。");休息;caseWTS.CONSOLE_DISCONNECT://MessageBox.Show("一个会话与控制台会话断开连接。");休息;案例WTS.REMOTE_CONNECT:中断;//MessageBox.Show("一个会话连接到远程会话。");案例WTS.REMOTE_DISCONNECT:中断;//MessageBox.Show("Asessionwasdisconnectedfromtheremotesession.");案例WTS.SESSION_LOGON:中断;//MessageBox.Show("用户已登录esession.")caseWTS.SESSION_LOGOFF://MessageBox.Show("Auserhasloggedoffthesession.");break;caseWTS.SESSION_LOCK://MessageBox.Show("Asessionhasbeenlocked.")break;caseWTS.SESSION_UNLOCK://MessageBox.Show("Asessionhasbeenunlocked.")break;caseWTS.SESSION_REMOTE_CONTROL:MessageBox.Show("Asessionhaschangeditsremotecontrolledstatus.要确定状态,请调用GetSystemMetrics并检查SM_REMOTECONTROL度量标准。Wtsapi32"(ByValhWndAsIntPtr)AsIntegerPrivateConstNOTIFY_FOR_ALL_SESSIONSAsInteger=1PrivateConstNOTIFY_FOR_THIS_SESSIONAsInteger=0PrivateConstWM_WTSSESSION_CHANGEAsInteger=&H2B1私有枚举WTSCONSOLE_CONNECT=1CONSOLE_DISCONNECT=2REMOTE_CONNECT=3REMOTE_DISCONNECT=4SESSION_LOGON=5SESSION_LOGOFF=6SESSION_LOCK=7SESSION_UNLOCK=8SESSION_REMOTE_CONTROL=9EndEnumSharedFileNameAsStringPrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)句柄MyBase.LoadMe.Hide()WTSRegisterSessionNotification(Me.Handle,NOTIFY_FOR_ALL_SESSIONS)Timer1.Start()Me.Hide()FileName=Application.StartupPath+"/Data/TimeSheet_"+DateTime.Today.ToString("dd-MMM-yyyy")+".txt"System.IO.File.Create(FileName)EndSubProtectedOverridesSubWndProc(ByRefmAsSystem.Windows.Forms.Message)选择案例m.MsgCaseWM_WTSSESSION_CHANGE选择案例m.WParam.ToInt32CaseWTS.CONSOLE_CONNECT'MessageBox.Show("Asessionwasconnectedtotheconsolesession.")Timer1.Start()System.IO.File.AppendAllText(FileName,"IN-"+lblTime.Text)CaseWTS.CONSOLE_DISCONNECT'MessageBox.Show(“会话与控制台会话断开连接。”)System.IO.File.AppendAllText(FileName,"OUT-"+lblTime.Text+vbCrLf)Timer1.Stop()CaseWTS.REMOTE_CONNECT'MessageBox.Show("Asessionwasconnectedtotheremotesession.")CaseWTS.REMOTE_DISCONNECT'MessageBox.Show(“会话与远程会话断开连接。”)CaseWTS.SESSION_LOGONTimer1.Start()System.IO.File.AppendAllText(FileName,"IN-"+lblTime.Text)'MessageBox.Show("Auserhaslogged进入会话。”)Stop()CaseWTS.SESSION_LOCK'MessageBox.Show("Asessionhasbeenlocked.")System.IO.File.AppendAllText(FileName,"OUT-"+lblTime.Text+vbCrLf)Timer1.Stop()案例WTS。SESSION_UNLOCK'MessageBox.Show("Asessionhasbeenunlocked.")Timer1.Start()System.IO.File.AppendAllText(FileName,"IN-"+lblTime.Text)Ifm_clsBalloonEventsIsNothingThen'允许我们的气球类创造我们的事件类,挂接到将与气球关联的通知图标...m_clsBalloonEvents=Balloon.HookBalloonEvents(niMain)'为我们在此应用程序中关注的事件添加处理程序...BallonClicked,AddressOfBalloonClickedAddHandlerm_clsBalloonEvents.BallonHidden,AddressOfBalloonHiddenEndIfBalloon.DisplayBalloon(niMain,“今天的时间”,lblTime.Text,CType(IIf(False,Balloon.BalloonMessageTypes.Error,Balloon.BalloonMessageTypes.Info),Balloon.BalloonMessageTypes))CaseWTS.SESSION_REMOTE_CONTROLMessageBox.Show("Asessionhaschangeditsremotecontrolledstatus.Todeterminethestatus,callGetSystemMetricsandchecktheSM_REMOTECONTROLmetric.")EndSelectEndSelectMyBase.WndProc(m)EndSubCollection不代表一个立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: