我已经看到Windows在更新视频驱动程序时可以切换到非常基本的控制台界面,我也看到像Borland C ++这样的程序这样做。
我真的很想知道如何使用C#中的控制台应用程序(或者如果你愿意的话,还可以使用VB.NET),我不介意使用P / Invoke(我敢打赌,我必须!)。
答案 0 :(得分:6)
在旧版本的Windows中,您可以使用Alt-Enter
将任何控制台全屏显示(如果我没记错的话)。
随着桌面窗口管理器的引入和Vista中GPU的全屏组合,全屏控制台窗口功能被删除。
(更新图形驱动程序时,图形子系统正在重置,你看到的不是控制台窗口,而是显卡默认启动到文本模式。)
答案 1 :(得分:2)
Windows 7不支持全屏控制台应用程序。在XP上你可以使用SetConsoleDisplayMode,你需要P / Invoke到这个,但它相对简单。我知道在win 7 x64上,此函数将失败,错误为120 This function is not spported on this system
要获得控制台句柄,您可以使用this answer中的一些代码。
答案 2 :(得分:1)
您可以右键单击控制台,单击属性,然后在选项盘中将其设置为全屏。您可以保存此更改以保持不变。
答案 3 :(得分:1)
您的意思是完全卸载GUI,还是更改屏幕分辨率,例如当您安装新设备驱动程序并且Windows转为800x600 / 8bpp而不是正常分辨率时?如果您想要全屏控制台,我无法提供帮助,但如果您要更改屏幕分辨率等,请查看http://www.c-sharpcorner.com/UploadFile/GemingLeader/display-settings08262009094802AM/display-settings.aspx
答案 4 :(得分:1)
也许我的implementation here可能有帮助。请注意,这对于缺少文本模式驱动程序支持的Windows系统不起作用。
using System;
using System.IO;
using System.Collections.Generic; //for dictionary
using System.Runtime.InteropServices; //for P/Invoke DLLImport
class App
{
/// <summary>
/// Contains native methods imported as unmanaged code.
/// </summary>
internal static class DllImports
{
[StructLayout(LayoutKind.Sequential)]
public struct COORD
{
public short X;
public short Y;
public COORD(short x, short y) {
this.X = x;
this.Y = y;
}
}
[DllImport("kernel32.dll")]
public static extern IntPtr GetStdHandle(int handle);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetConsoleDisplayMode(
IntPtr ConsoleOutput
,uint Flags
,out COORD NewScreenBufferDimensions
);
}
/// Main App's Entry point
public static void Main (string[] args)
{
IntPtr hConsole = DllImports.GetStdHandle(-11); // get console handle
DllImports.COORD xy = new DllImports.COORD(100,100);
DllImports.SetConsoleDisplayMode(hConsole, 1, out xy); // set the console to fullscreen
//SetConsoleDisplayMode(hConsole, 2); // set the console to windowed
}
}