Вам дорога в WinAPI. Стандартных средств в NetFramework вроде нет для таких целей.
Получение окон:
private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool EnumWindows(EnumWindowsProc callback, IntPtr extraData);
Получение размера:
[DllImport("user32.dll")]
private static extern bool GetWindowRect(IntPtr hWnd, ref Rectangle rect);
и т.д.
Вобщем ищите тут:
Window Functions