/// <summary> /// Gets the sessions on the terminal server. /// </summary> /// <returns>An array of sessions.</returns> public TerminalServerSession[] GetSessions() { IntPtr dataPtr; int count; TerminalServerSession[] sessions; if (!Win32.WTSEnumerateSessions(this, 0, 1, out dataPtr, out count)) { Win32.ThrowLastError(); } using (var data = new WtsMemoryAlloc(dataPtr)) { sessions = new TerminalServerSession[count]; for (int i = 0; i < count; i++) { var session = data.ReadStruct <WtsSessionInfo>(i); sessions[i] = new TerminalServerSession( this, session.SessionID, session.WinStationName, session.State ); } return(sessions); } }
public SessionInformationWindow(TerminalServerSession session) { InitializeComponent(); this.AddEscapeToClose(); this.SetTopMost(); labelUsername.Text = session.DomainName + "\\" + session.UserName; labelSessionId.Text = session.SessionId.ToString(); labelState.Text = session.State.ToString(); if (!string.IsNullOrEmpty(session.ClientName)) labelClientName.Text = session.ClientName; if (session.ClientAddress != null) labelClientAddress.Text = session.ClientAddress.ToString(); if (session.ClientDisplay.ColorDepth != 0 && session.ClientDisplay.ColorDepth != 2) // HACK labelClientDisplayResolution.Text = session.ClientDisplay.HorizontalResolution + "x" + session.ClientDisplay.VerticalResolution + "@" + session.ClientDisplay.ColorDepth; }
/// <summary> /// Gets the sessions on the terminal server. /// </summary> /// <returns>An array of sessions.</returns> public TerminalServerSession[] GetSessions() { IntPtr dataPtr; int count; if (!Win32.WTSEnumerateSessions(this, 0, 1, out dataPtr, out count)) Win32.Throw(); using (WtsMemoryAlloc data = new WtsMemoryAlloc(dataPtr)) { TerminalServerSession[] sessions = new TerminalServerSession[count]; for (int i = 0; i < count; i++) { WtsSessionInfo session = data.ReadStruct<WtsSessionInfo>(0, WtsSessionInfo.SizeOf, i); sessions[i] = new TerminalServerSession( this, session.SessionID, session.WinStationName, session.State ); } return sessions; } }