Вы получаете сообщение об ошибке «System.IndexOutOfRangeException:« Индекс находился за пределами массива. »Из-за AllScreens [1], когда у вас подключен только один экран, в массиве AllScreen есть только одно значение, так что index [1] выходит за пределы.
Изменить;
Rectangle ru = Rectangle.Union(Screen.AllScreens[0].Bounds , Screen.AllScreens[1].Bounds);
К;
var ru = Screen.AllScreens.Select(a => a.Bounds).Aggregate(Rectangle.Union);
Теперь, потому что вы используете Select, вы получите только AllScreens [0] вместо того, чтобы угадывать, какие индексы будут там, этот код теперь также работает, если у вас есть три монитора или любая другая конфигурация мониторов.
Редактировать
Кроме того, в качестве небольшого примечания, если вы пытаетесь заблокировать действия пользователя вне вашей программы. Это не будет полностью блокировать их действия, например, нажатие клавиши windows по-прежнему вызовет панель задач или вернет управление пользователю.