我写了一个控制台应用程序,它本质上是一个Console.ReadLine() – Loop。 当应用程序正在等待input时,按向上箭头键迭代所有以前的input行。 我的应用程序不包含此function的任何代码。 Windows提供了哪些内容? 我怎样才能禁用它?
我只能想象它是控制台子系统的一个function,或者在Console.ReadLine()中实现。
以下是一些展示所描述行为的示例代码:
namespace ConsoleApplication { class Program { static void Main(string[] args) { string input; do { input = System.Console.ReadLine(); } while (input != "exit"); } } }
我想现在禁用历史loggingfunction,稍后使用我自己的代码重新实现它。 目前的行为太有限了。
Shell Vs Process.start执行外部应用程序
带定时器的Windows服务
禁用交互式login
检测Windows机器是否运行了病毒扫描程序?
如何获得VB.NET中Caps Lock的当前状态?
用Winforms绘图
Windows SDK安装失败
如何在Linux环境下运行.net应用程序?
C#检测所有窗口中的关键事件
如何知道窗口zorder更改的时间
你可以通过调用SetConsoleHistoryInfo以正确设置CONSOLE_HISTORY_INFO结构来以编程方式改变这种行为…似乎没有托管类/方法,所以你将不得不使用DllImport等
http://msdn.microsoft.com/en-us/library/ms686031%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms682077%28v=VS.85%29.aspx
如果需要 – 控制台的其他几个方面可以以管理的方式处理 – 请参阅c#console,Console.Clear问题
历史记录功能内置在Windows命令行界面中,它不是您的应用程序的功能。 AFAIK没有办法在你的代码中禁用它,因为它是特定于Windows Shell环境的(除非有可以更改的设置,
你可以通过使用一个关键的监听器来获取所有向上的按键,并执行你自己的代码,这样可以覆盖默认行为,这样事件就不会下降到shell来处理。
是的,这是控制台子系统的功能,而不是您的应用程序。 要改变它,点击控制台的控制框(左上角),属性,选项标签:“命令历史”。 默认是50个项目,4个缓冲区。 据说这可以用DOSKEY从命令行以编程方式进行配置,但几分钟的修补并没有引导我到任何地方。
ALT+F7将清除命令历史记录,同时执行命令DOSKEY /reinstall 。 我在Windows 7中测试。
更新:相应的Win32 API调用是SetConsoleHistoryInfo和p / invoke签名可以在http://pinvoke.net/default.aspx/kernel32/SetConsoleHistoryInfo.html
没有经过测试,但它看起来像传递一个CONSOLE_HISTORY_INFO实例SetConsoleHistoryInfo与缓冲区大小和计数设置为1将给与控制台窗口属性对话相同的控制。
P /调用定义在pinvoke.net
另外请注意,这需要Windows V6或更高版本(即Vista / 2008/7 / 2008R2)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。