EnumWindowStations (user32)
Last changed: -69.70.66.130

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern bool EnumWindowStations(EnumWindowStationsDelegate lpEnumFunc,
   IntPtr lParam);

VB Signature:

<DllImport("user32.dll", EntryPoint:="EnumWindowStations", _

ExactSpelling
=False, CharSet:=CharSet.Auto, SetLastError:=True)> _

Public Function EnumWindowStations(ByVal lpEnumFunc As EnumWindowStationsDelegate, ByVal lParam As IntPtr) As Boolean

    ' Leave function empty - DLLImport attribute forwards calls
    End Function

User-Defined Types:

Public Delegate Function EnumWindowStationsDelegate(<MarshalAs(UnmanagedType.LPTStr)> ByVal windowsStation As String, ByVal lParam As IntPtr) As Boolean

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

class Program

    {
    [DllImport( "user32.dll" )]
    private static extern bool EnumWindowStations( EnumWindowStationsDelegate lpEnumFunc, IntPtr lParam );

    private delegate bool EnumWindowStationsDelegate( string windowsStation, IntPtr lParam );

    private static bool EnumWindowStationsCallback( string windowStation, IntPtr lParam )
    {
        GCHandle gch       = GCHandle.FromIntPtr( lParam );
        IList<string> list = gch.Target as List<string>;

        if ( null == list ) {
        return (false);
        }

        list.Add( windowStation );

        return (true);
    }

    static void Main()
    {
        IList<string> list           = new List<string>();
        GCHandle gch             = GCHandle.Alloc( list );
        EnumWindowStationsDelegate childProc = new EnumWindowStationsDelegate( EnumWindowStationsCallback );

        EnumWindowStations( childProc, GCHandle.ToIntPtr( gch ) );

        foreach ( string a in list ) {
        Console.WriteLine( a );
        }

        Console.ReadKey();
    }
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation