Class WinConsole


  • public class WinConsole
    extends Object
    Представляет набор функций для работы с консолью

    Основаня документация по функцию консоли есть по этой ссылке на docs.microsoft.com

    Запуск консольного приложения

    Что бы использовать данный класс, java приложение следует запустить с использованием javaw.exe. В обычном использовании java.exe консольнуые функции не доступны по причине архитекуры ОС.

    При первом создании экземпляра WinConsole, будет создана консоль rawAPI().AllocConsole() (Wincon.AllocConsole())
    Когда JVM будет завершать работу (Runtime.getRuntime().addShutdownHook), консоль будет освобождена Wincon.FreeConsole()

    Ввод-вывод

    С консолью связаны обычно 3 стандарных канала
    • stdOutputHandle : WinNT.HANDLE - std output, канал вывода обычной информации в файл/терминал
    • stdErrorHandle : WinNT.HANDLE - std errput, канал вывода ошибок информации в файл/терминал
    • stdInputHandle : WinNT.HANDLE - std input, канал ввода из файла/клавиатуры/....
    • Constructor Detail

      • WinConsole

        public WinConsole()
    • Method Detail

      • getStdOutputHandle

        public static com.sun.jna.platform.win32.WinNT.HANDLE getStdOutputHandle()
        Возвращает handle для stdout
        Returns:
        handle для stdout
      • getStdInputHandle

        public static com.sun.jna.platform.win32.WinNT.HANDLE getStdInputHandle()
        Возвращает handle для stdinput
        Returns:
        handle для stdinput
      • getStdErrorHandle

        public static com.sun.jna.platform.win32.WinNT.HANDLE getStdErrorHandle()
        Возвращает handle для std error
        Returns:
        handle для std error
      • getOutput

        @Deprecated(since="\u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c major")
        public WinConsoleOutput getOutput()
        Deprecated.
        Консоль для вывода в stdout, в целом можно писать и в stderr - разницы нет
        Returns:
        консоль вывода в stdout
      • getErrput

        @Deprecated(since="\u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c major")
        public WinConsoleOutput getErrput()
        Deprecated.
        Консоль для вывода в stderr, в целом можно писать и в stdout - разницы нет
        Returns:
        консоль вывода в stdout
      • getInput

        public WinConsoleInput getInput()
        Консоль для чтения событий ввода
        Returns:
        чтение событий ввода
      • getAvailableInputEventsCount

        public int getAvailableInputEventsCount()
        Возвращает кол-во полученных, но не прочетанных событий ввода
        Returns:
        кол-во событий ввода в буфере
      • getInputMode

        public InputMode getInputMode()
        Возвращает режим ввода
        Returns:
        режим ввода
      • setInputMode

        public void setInputMode​(InputMode mode)
        Указывает режим ввода
        Parameters:
        mode - режим ввода
      • getInputCodePageOptional

        public Optional<CodePage> getInputCodePageOptional()
        Возвращает текущую кодовую страницу
        Returns:
        кодовая страница
      • setInputCodePage

        public void setInputCodePage​(CodePage codePage)
        Указывает текущую кодовую страницу
        Parameters:
        codePage - кодовая страница
      • read

        public List<InputEvent> read​(int eventCount)
        Читает события из буфера, потенциально - блокируемая операция, лучше предварительно проверить наличие данных через getAvailableInputEventsCount()
        Parameters:
        eventCount - сколько событий прочесть и удалить из буфера
        Returns:
        события
      • read

        public List<InputEvent> read()
        Читает события из буфера, потенциально - блокируемая операция, лучше предварительно проверить наличие данных через getAvailableInputEventsCount()
        Returns:
        события
      • peek

        public List<InputEvent> peek​(int eventCount)
        Читает события из буфера, не удаляя их - блокировать не должно
        Parameters:
        eventCount - сколько событий ожидаем
        Returns:
        события ввода
      • flushInput

        public void flushInput()
        Очистить буфер ввода
      • getScreenBufferMode

        public ScreenBufferMode getScreenBufferMode()
        Возвращает режим работы вывода (output/error output)
        Returns:
        режим вывода информации
      • setScreenBufferMode

        public void setScreenBufferMode​(ScreenBufferMode mode)
        Указывает режим работы вывода (output/error output)
        Parameters:
        mode - режим вывода информации
      • getOutputCodePageOptional

        public Optional<CodePage> getOutputCodePageOptional()
        Возвращает кодовую страницу output
        Returns:
        кодовая страница
      • setOutputCodePage

        public void setOutputCodePage​(CodePage codePage)
        Указывает кодовую страницу output
        Parameters:
        codePage - кодовая страница
      • getCursorInfo

        public CursorInfo getCursorInfo()
        Возвращает видимость и размер курсора
        Returns:
        видимость и размер курсора
      • setCursorInfo

        public void setCursorInfo​(CursorInfo cursorInfo)
        Указывает видимость и размер курсора
        Parameters:
        cursorInfo - видимость и размер курсора
      • getScreenBufferInfo

        public ScreenBufferInfo getScreenBufferInfo()
        Возвращает информацию о размере и расположение вывода информации
        Returns:
        информация о размере и расположении вывода информации
      • getCharAttributes

        public CharAttributes getCharAttributes()
        Возвращает цвет и другие атрибуты выводимых символов
        Returns:
        цвет и другие атрибуты выводимых символов
      • setCharAttributes

        public void setCharAttributes​(CharAttributes attributes)
        Указывает цвет и другие атрибуты выводимых символов
        Parameters:
        attributes - цвет и другие атрибуты выводимых символов
      • write

        public int write​(String text)
        Выводит сиволы в озицию курсора и меняет позицию курсора
        Parameters:
        text - выводимый текст
        Returns:
        кол-во записанных символов
        See Also:
        setScreenBufferMode(ScreenBufferMode), cursor(int, int)
      • cursor

        public void cursor​(int x,
                           int y)
        смещает курсор в указанные позицию
        Parameters:
        x - позиция курсора
        y - позиция курсора
      • getLargestSize

        public LargestSize getLargestSize()
        Retrieves the size of the largest possible console window, based on the current font and the size of the display.

        The function does not take into consideration the size of the console screen buffer, which means that the window size returned may be larger than the size of the console screen buffer. The GetConsoleScreenBufferInfo function can be used to determine the maximum size of the console window, given the current screen buffer size, the current font, and the display size.

        Получает размер максимально возможного окна консоли на основе текущего шрифта и размера экрана.

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

        Returns:
        размер
      • getTitle

        public String getTitle()
      • setTitle

        public void setTitle​(String title)
      • controlHandleReset

        public void controlHandleReset()