2012-01-17 25 views
2

私はPowerShellコマンドウィンドウの最大幅(列のすなわち数)を取得するために$ host.UI.RawUI.MaxPhysicalWindowSize.Widthを使用して、PowerShellコマンドウィンドウのサイズが十分に立証されて設定するが、最小バッファ幅することができますマシン間で異なるようです。一台のマシン上では13だったが、別の上に、それは私が1に最小ウィンドウの高さと幅を設定することができ、最小バッファの高さも、誰もが、私はこの最小バッファ幅の値を取得する方法1.PowerShellでBufferWidthの最小画面を見つける方法は?

を知っていますすることができます14でしたプログラム的に(ちょうど値をしようとして例外をキャッチせずに!)

答えて

4

$host.UI.RawUI.BufferSizeを設定すると、そのコンソール画面のバッファに影響を与え、ので(コマンドプロンプト - >プロパティ - >レイアウト - あなたは$host.UI.RawUI.BufferSizeを変更する場合>画面バッファサイズが変更された)、それはコンソールとしてそのBUFFERSIZEに同じ制限があります画面。

我々はhereを読むことができるように、BUFFERSIZEのための指定された寸法は、システムによって許容される最小サイズよりも小さくすることができません。この最小値は、(ユーザによって選択された)コンソールの現在のフォントサイズと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

関連する問題