Windows Изменение размера терминала - PullRequest
0 голосов
/ 06 января 2020

Я обнаружил, что часто нижняя часть новой консоли отталкивается от нижней части экрана, поэтому я помещаю нижнюю часть в свой $ Profile, чтобы это исправить. Я попытался начать использовать новый Windows Terminal для работы с PowerShell и обнаружил, что ни один из инструментов для изменения размера консоли, которые я использую, не поддерживает такую ​​функцию. Хотя это имеет смысл (поскольку это не консоль PowerShell!), Люди, очевидно, захотят обходных путей для этого при использовании терминала Windows (и я нахожу ту же проблему, что новые терминалы Windows часто являются частью нижней части экран).

Кто-нибудь нашел обходные пути для $host.UI.RawUI., которые мы можем использовать для изменения размера / перемещения нового Windows приложения терминала?

function Global:Set-ConsoleTopLeft {
    # Note: the DLL code below should NOT be indented from the left-side(!)
    Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")] 
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int W, int H); '
    $consoleHWND = [Console.Window]::GetConsoleWindow();
    $consoleHWND = [Console.Window]::MoveWindow($consoleHWND,75,0,600,600);
    # $consoleHWND = [Console.Window]::MoveWindow($consoleHWND,-6,0,600,600);
}

function Global:Set-MaxWindowSize {
    if ($Host.Name -match "console") {
        $MaxHeight = $host.UI.RawUI.MaxPhysicalWindowSize.Height - 1
        $MaxWidth = $host.UI.RawUI.MaxPhysicalWindowSize.Width - 20

        $MyBuffer = $Host.UI.RawUI.BufferSize
        $MyWindow = $Host.UI.RawUI.WindowSize

        $MyWindow.Height = ($MaxHeight)
        $MyWindow.Width = ($Maxwidth-2)

        $MyBuffer.Height = (9999)
        $MyBuffer.Width = ($Maxwidth-2)

        $host.UI.RawUI.set_bufferSize($MyBuffer)
        $host.UI.RawUI.set_windowSize($MyWindow)
    }
}

Set-ConsoleTopLeft
Set-MaxWindowSize
...