Вопрос по .net, console-application, screen-size, c# – Как узнать размер экрана Консольного приложения?

4

Как вы получаете размер экрана в консольном приложении?

@ user1344948, заголовок вашего комментария буквально гласитHow to get the screen size of Console Application? Не ненавидьте других, когда вы (частично) ошибаетесь ... Тем не менее, эта тема дает как размер консоли, так и экран - выигрывайте! Klicker
я сказал размер экрана в консольном приложении не для консольного приложения ... есть разница. и тому, который дал -1 (если это был кто-то, кто думал о размере для консоли (что, кстати, если вы правильно прочитали вопрос), это не так) и всем остальным я извиняюсь за то, что капризничаю, и я ценю ваши ответы user1344948
Экран означает размер консоли или разрешение экрана? SLaks
Этот вопрос может быть старым, но у меня сейчас такая же проблема. Решение L.B требует от меня добавить ссылку наSystem.Windows.Forms и решение Ильи Тряпицина зависит от ОС. Жаль, что не существует простого независимого от ОС способа сделать это внутри консольного приложения. Robert S.

Ваш Ответ

3   ответа
1

а Сначала мы должны получить наибольшую ширину и высоту окна.

var largestWindowX = Console.LargestWindowWidth;
var largestWindowY = Console.LargestWindowHeight;

Для экрана с разрешением 1920x1080 наибольшие значения X и Y составляют X: 240 и Y: 66. Записав значения на экран, мы можем затем вручную изменить размер экрана, чтобы получить соответствующие координаты X и Y этого размера экрана. ,

Теперь мы берем наибольшее значение последнего размера экрана в этом случае 1600x1024, то есть X: 200 и Y: 62, и проверяем, больше ли экран, чем или равен дисплею, и делаем окно консолиthis big.

if(largestWindowX >= 200 && largestWindowY >= 62)
{
    //The values 200 and 40 can be changed depending on what you are making
    Console.SetWindowSize(200, 40);
}
//add more if else statments depending how you wish to scale it as.
else
{
    //Otherwise any screen size smaller than the sizes added make it this...
    Console.SetWindowSize(/*Your X value*/, /*Your Y value*/);
}

Если вы ищете способ найти размер дисплея в ОС, я не имею ни малейшего понятия, потому что я не продвинутый программист, просто знаю немного этого обширного языка.

Тем не менее, вы могли бы технически использовать значения переменных выше. например:

if(largestWindowX == 240 && largestWindowY == 66)
{
     Console.WriteLine("This is a 1920x1080 screen");
}

Я не совсем уверен, что это будет точный способ определения размера экрана. В противном случае, если необходим полный экранAlt+Enter работает...

3

вы можете использовать WMI (Windows Management Instrumentation)

        var scope = new ManagementScope();
        scope.Connect();

        var query = new ObjectQuery("SELECT * FROM Win32_VideoController");

        using (var searcher = new ManagementObjectSearcher(scope, query))
        {
            var results = searcher.Get();
            foreach (var result in results)
            {
                Console.WriteLine("Horizontal resolution: " + result.GetPropertyValue("CurrentHorizontalResolution"));
                Console.WriteLine("Vertical resolution: " + result.GetPropertyValue("CurrentVerticalResolution"));
            }               
        }
Я работаю с Visual Studio на виртуальной машине Windows 10, работающей на хосте MacOS. Это был единственный метод, который действительно возвращал разрешение виртуального клиента. Способ Screen.PrimaryScreen возвращал разрешение хоста.
9
var w = Console.WindowWidth;
var h = Console.WindowHeight;

--EDIT--

@RobertS. Я не думаю, что отрицательное голосование является справедливым, по крайней мере, это ответ для некоторых людей. Не стесняйтесь размещать лучшее, независимое от ОС решение, и я буду его поддерживать.
не то, что я искал ... в поисках размера дисплея, мог бы быть более ясным в этом вопросе user1344948
Screen класс доступен только сSystem.Windows.Forms сборка, так что это может быть возможно (путем добавления ссылки вручную), но потребуется эта сборка только для этой цели.

Похожие вопросы