Member 13695364 Ответов: 1

Есть ли программное решение для установки консольного шрифта vb2017.net-что?


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

Что я уже пробовал:

Система Импорта.Коллекции.Общий
Система Импорта.В LINQ
Система Импорта.Текст
Система Импорта.Во время выполнения.InteropServices
Система Импорта.Рисование

Пространство Имен ConsoleExtender
<StructLayout(LayoutKind.Последовательный, пакет:=1)>
Публичная Структура ConsoleFont
Общественный Показатель Как У Uinteger
Общественные SizeX Как Короткие, SizeY, Как Короткие
Торцевая Конструкция

Public NotInheritable Class ConsoleHelper
Частная Субмарина Новая()
Конец Подводной Лодки
<dllimport("kernel32")>
Публичная общая функция SetConsoleIcon(hIcon As IntPtr) Как Логическое
Конечная Функция

Public Shared Function SetConsoleIcon(icon As Icon) As Boolean
Возврат SetConsoleIcon(значок.Ручка)
Конечная Функция

<dllimport("kernel32")>
Частные общие функции SetConsoleFont(hOutput в качестве указателя IntPtr, показатель как у uinteger) Как Логическое
Конечная Функция

Частное Перечисление StdHandle
OutputHandle = -11
Конец Перечисления

<dllimport("kernel32")>
Частная общая функция GetStdHandle(индекс как StdHandle) Как IntPtr
Конечная Функция

Общедоступная общая функция SetConsoleFont(индекс как UInteger) Как Логическое
Return SetConsoleFont(GetStdHandle(StdHandle.OutputHandle), индекс)
Конечная Функция

<dllimport("kernel32")>
Частная общая GetConsoleFontInfo функции(hOutput в качестве указателя IntPtr, &ЛТ;помощью атрибута marshalas(unmanagedtype значение.боол)&ГТ; bMaximize как логических, считаются как uinteger, &ЛТ;помощью атрибута marshalas(unmanagedtype значение.LPArray), Out> fonts As ConsoleFont()) As Boolean
Конечная Функция

<dllimport("kernel32")>
Частная Общая Функция GetNumberOfConsoleFonts() Как UInteger
Конечная Функция

Общедоступный Только Для Чтения ConsoleFontsCount Собственность () Как UInteger
Возьми
Вернуться GetNumberOfConsoleFonts()
Конец Получить
Конечное Свойство

Общедоступный Только Для Чтения ConsoleFonts Имущества() В Качестве ConsoleFont()
Возьми
Dim fonts As ConsoleFont() = New ConsoleFont(GetNumberOfConsoleFonts() - 1) {}
Если шрифты.Длина > 0 затем
GetConsoleFontInfo(GetStdHandle(StdHandle.OutputHandle), False, CUInt(шрифты.Длина), шрифты)
Конец, Если
Возврат шрифтов
Конец Получить
Конечное Свойство

End Класса
Конечное Пространство Имен

1 Ответов

Рейтинг:
8

OriginalGriff

Нелегко, но это было сделано: Изменение консольных шрифтов | блог Павла[^] - код написан на языке C#, но вы можете просто включить ссылку на управляемую вспомогательную библиотеку DLL и использовать ее из своего VB-кода.