using System; using System.Runtime.InteropServices; namespace Remotely.Shared.Win32 { public static class WTSAPI32 { [StructLayout(LayoutKind.Sequential)] public struct WTS_SESSION_INFO { public uint SessionID; [MarshalAs(UnmanagedType.LPStr)] public string pWinStationName; public WTS_CONNECTSTATE_CLASS State; } public enum WTS_CONNECTSTATE_CLASS { WTSActive, WTSConnected, WTSConnectQuery, WTSShadow, WTSDisconnected, WTSIdle, WTSListen, WTSReset, WTSDown, WTSInit } public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero; [DllImport("wtsapi32.dll", SetLastError = true)] static extern IntPtr WTSOpenServer(string pServerName); [DllImport("wtsapi32.dll", SetLastError = true)] public static extern int WTSEnumerateSessions( System.IntPtr hServer, int Reserved, int Version, ref System.IntPtr ppSessionInfo, ref int pCount); } }