我有一些麻烦设置我的应用程序单声道,它给了我一个GetConsoleWindowexception。 我以为这会打开一个新的窗口,当你在Windows上运行它,但在单声道,在CentOS 6与Gnome它给了我这个例外。
错误代码:
Unhandled Exception: System.EntryPointNotFoundException: GetConsoleWindow at (wrapper managed-to-native) Silverwave.Program:GetConsoleWindow () at Silverwave.Program.Main (System.String[] Args) [0x00000] in <filename unkno wn>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.EntryPointNotFoundException: GetConsol eWindow at (wrapper managed-to-native) Silverwave.Program:GetConsoleWindow () at Silverwave.Program.Main (System.String[] Args) [0x00000] in <filename unkno wn>:0 [root@h2297404 Debug]# Unhandled Exception: -bash: Unhandled: opdracht niet gevonden [root@h2297404 Debug]# System.EntryPointNotFoundException: GetConsoleWindow -bash: System.EntryPointNotFoundException:: opdracht niet gevonden
提前致谢
控制台窗口是特定于Windows系统(这就是为什么GetConsoleWindow()在.NET中不存在,你必须p /调用它)。
Linux系统不公开这个API,所以你不能在Linux上调用它,并且没有替换。
简短的回答 – 使用Console.WindowWidth
很长的回答:
$ COLUMNS就是这样一个变量。 还有stty -a或更具体stty大小
stty使用
get_terminal_width_height(STDIN_FILENO, &width, &height)
而这又称为
ioctl(fd, TIOCGWINSZ, &winsize);
TIOCGWINSZ
用屏幕宽度和高度填充第三个参数指向的winsize结构。 winsize结构在`sys / ioctl.h'中定义如下:
struct winsize { unsigned short ws_row; /* rows, in characters */ unsigned short ws_col; /* columns, in characters */ unsigned short ws_xpixel; /* horizontal size, pixels */ unsigned short ws_ypixel; /* vertical size, pixels */ };
在这里它被称为单声道
导出为“TtySetup”
这是从这里导入到C#代码
namespace System { static class ConsoleDriver { ... [MethodImplAttribute(MethodImplOptions.InternalCall)] unsafe internal static extern bool TtySetup ( string keypadXmit, string teardown, out byte [] control_characters, out int *address);
不安全无效CheckWindowDimensions()
这可以通过属性WindowWidth获得:
namespace System { class TermInfoDriver : IConsoleDriver { public int WindowWidth {
接口IConsoleDriver
我检查,这个作品(至少从单声道4.0.2.5)。
using System; class mainclass { public static int Main(string[] args) { Console.WriteLine(Console.WindowWidth); return 0; } } sabayon aa $ mcs test.cs -r:System.dll sabayon aa $ mono test.exe 239