[英]Mono resize terminal on Mac OS X
在Windows中, 公共靜態void SetWindowSize(int width,int height)可以正常工作。
對於單聲道,不支持此方法。
在Mac OS X下,是否可以通過某些DllImport做到這一點?
這是適用於優勝美地的最終解決方案:
感謝apple.stackexchange的RobertN和Chris Page: https ://apple.stackexchange.com/questions/33736/can-a-terminal-window-be-resized-with-a-terminal-command/47841#47841 ? newreg = 7290606aabbc45468a3f3ee640cd1d09
using System;
using System.Runtime.InteropServices;
namespace Demo.Native.ResizeTerm
{
class MainClass
{
[DllImport ("libc")]
private static extern int system (string exec);
public static void Main (string[] args)
{
system(@"printf '\e[8;50;100t'");
Console.WriteLine ("We will be 50 lines and 100 columns in Terminal.app now");
Console.ReadKey ();
}
}
}
更新:我忽略了“調整大小”來自XQuartz(xserver / xterm)軟件包的事實,Apple不再直接提供或維護該軟件包。 有關信息,請參見XQuartz項目。 請參閱Swell的答案,因為它使用了術語大小轉義序列(所有調整大小實際上都在做)。
您可以使用系統調用來“調整大小”(有關詳細信息,請使用man調整大小 )。 這是所有(?)xterm和shell(bash / tsh / csh / ...)的標准配置
假設您沒有使用ncurses,但是如果您正在使用ncurses並設置了調整大小處理程序,則將獲得resize事件,就像用戶使用鼠標調整終端大小一樣。
using System;
using System.Runtime.InteropServices;
namespace Demo.Native.ResizeTerm
{
class MainClass
{
[DllImport ("libc")]
private static extern int system (string exec);
public static void Main (string[] args)
{
system("resize -s 50 100 > /dev/null");
Console.WriteLine ("We will be 50 lines and 100 columns in Terminal.app now");
Console.ReadKey ();
}
}
}
我將此示例添加到了CursesSharp存儲庫中,該鏈接是github的源鏈接: https : //github.com/sushihangover/CursesSharp/blob/368906549512446dc5e97f8c9214c482d6847aac/CursesSharp.Demo/Demo.Native.Native.ResizeTerm/Program.cs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.