2012-01-17 5 views
2

$ host.UI.RawUI.MaxPhysicalWindowSize.Width를 사용하여 PowerShell 명령 창의 최대 너비 (즉, 열의 수)를 얻을 수 있으며 PowerShell 명령 창의 크기 설정은 문서화되어 있지만 최소 버퍼 너비 기계마다 다를 수 있습니다. 하나의 컴퓨터에서는 13 이었지만 다른 컴퓨터에서는 14였습니다. 최소 창 높이와 너비를 1로 설정할 수 있고 최소 버퍼 높이를 1로 설정할 수도 있습니다.PowerShell에서 최소 화면 BufferWidth를 찾는 방법은 무엇입니까?

이 최소 버퍼 너비 값을 얻는 방법을 알고있는 사람이 있습니까? 프로그래밍 방식 (단지 값을 시도하고 예외를 잡기없이!)

답변

4

$host.UI.RawUI.BufferSize를 설정하는 것은 자사의 콘솔 화면의 버퍼에 영향을주기 때문에 (명령 프롬프트 -> 속성 -> 레이아웃 - 당신이 $host.UI.RawUI.BufferSize을 변경할 때> 화면 버퍼 크기가 수정)는 콘솔로의 버퍼 크기에 동일한 제한이있다 화면.

here을 읽을 수 있으므로 버퍼 크기에 지정된 크기는 시스템에서 허용하는 최소 크기보다 작을 수 없습니다. 이 최소값은 사용자가 선택한 콘솔의 현재 글꼴 크기와 GetSystemMetrics 함수에 의해 반환 된 SM_CXMIN 및 SM_CYMIN 값에 따라 다릅니다.

하나의 의미는 콘솔 화면 글꼴이 클수록 작아서 버퍼 크기를 줄일 수 있다는 것입니다.

예를 들어 다음은 콘솔 화면의 최소 너비를 얻는 방법입니다. 나는 P/User32.dll에서 GetSystemMetrics 함수를 호출하는데, this advanced function (New-PInvoke by Joel Bennett)이다.

$SM_CXMIN =28 # "The minimum width of a window, in pixels." enum value 
New-PInvoke -Library User32.dll -Signature "int GetSystemMetrics(uint Metric)" 
GetSystemMetrics $SM_CXMIN # returns 132 on my system 

콘솔 화면 버퍼에 의해 사용되는 폰트의 사이즈를 검색하려면 KERNEL32.DLL에서 GetConsoleFontSize 시도.

참고 GetSystemMetrics $ SM_CXMIN 의해 반환

값 콘솔 화면 (경계 포함)의 전체 폭이다.

+0

고마워요. 나는 픽셀과 폰트 크기로 내려 가지 않기를 바랬지 만 그것이 유일한 방법이라고 생각한다. 내가 이것을 시도하고 구현한다면, 나는 다시보고하겠다. 그러나 평균 시간 내에 나는 임의의 최소 너비 20 – FrinkTheBrave

0

어쩌면 내가 잘못에있어하지만

[system.console]::BufferWidth 

당신은 실제 버퍼 폭의 크기를 얻을.

이 값은 현재 [System.Console]::WindowWidth 크기보다 작을 수 없습니다 (예외가 발생합니다).

+0

예, 버퍼 너비가 실제 화면 너비와 같지 않습니다. WindowWidth는 BufferWidth보다 클 수 없지만 WindowWidth가 1이면 최소 BufferWidth는 무엇입니까 – FrinkTheBrave

관련 문제