Windows C# Tutorial

/*        
Revised from 
NET Development for Java Programmers
*/
using System;
using System.Runtime.InteropServices;
[ StructLayout( LayoutKind.Explicit ) ]
struct Point
{
  [ FieldOffset( 0 ) ]
  public int x;
  [ FieldOffset( 4 ) ]
  public int y;
}
[ StructLayout( LayoutKind.Sequential ) ]
struct Rect
{
  public int left;
  public int top;
  public int right;
  public int bottom;
}
[ StructLayout( LayoutKind.Sequential ) ]
struct MonitorInfo
{
  public uint size;
  public Rect monitor;
  public Rect work;
  public uint flags;
}
class MainClass
{
  [ DllImport( "user32.dll" ) ]
  static extern IntPtr MonitorFromPoint( Point p, uint flags );
  [ DllImport( "user32.dll" ) ]
  static extern bool GetMonitorInfo( IntPtr hmon, ref MonitorInfo mi );
  [STAThread]
  static void Main(string[] args)
  {
    Point p = new Point();
    p.x = 1;
    p.y = 1;
    IntPtr hmon = MonitorFromPoint( p, 1 );
    MonitorInfo mi = new MonitorInfo();
    mi.size = (uint)Marshal.SizeOf( mi );
        bool success = GetMonitorInfo( hmon, ref mi );
    Console.WriteLine(mi.size);
    Console.WriteLine(mi.monitor);
    
  }
}
40
Rect