Tag: 控制台

使用控制台应用程序在C#中使用GenerateConsoleCtrlEvent

我正在努力让这个工作变得更加困难,希望你们其中一个人之前做过这件事。 我有一个C#控制台应用程序正在运行一个inheritance其控制台的子进程。 我希望外部应用程序捕获的ctrl-c被传递到内部应用程序,以便它有机会很好地关闭。 我有一些非常简单的代码。 我启动一个进程,然后使用WaitForExit(10)进行轮询。 我还注册了一个CancelKeyPress处理程序,它在触发时将bool设置为true。 轮询循环也检查这个,当它为真时,它调用GenerateConsoleCtrlEvent()(我通过pinvoke映射)。 我已经尝试了很多params组合到GenerateConsoleCtrlEvent()。 第一个参数为0或1,第二个参数为0或子进程的ID。 似乎没什么用。 有时我得到一个假回来,Marshal.GetLastWin32Error()返回0,有时我得到回来。 但没有一个导致子应用程序接收ctrl-c。 为了绝对肯定,我编写了一个测试C#应用程序作为子应用程序,打印出它正在发生的事情,并validation在运行时手动输入ctrl-c正确导致它退出。 几个小时以来,我一直在反对这个问题。 谁能给我一些关于去哪里的指示?

从控制台读取unicode

我试图从C#中的控制台读取unicode字符串,例如,让我使用他的: C:\ SVN \D³ebugger的\ src \виталик\的Program.cs 起初我刚试过Console.ReadLine() ,它返回给我c:\SVN\D3ebugger\src\???????\Program.cs 我已经尝试将Console.InputEncoding设置为UTF8,因为Console.InputEncoding = Encoding.UTF8但是返回了我c:\SVN\D³ebugger\src\???????\Program.cs ,基本上是在c:\SVN\D³ebugger\src\???????\Program.cs西里尔字母串的一部分。 所以随机磕磕绊绊我尝试设置这样的编码, Console.InputEncoding = Encoding.GetEncoding(1251); 它返回了c:\SVN\D?ebugger\src\виталик\Program.cs ,这次破坏了³字符。 此时似乎通过切换InputStream的编码 ,我一次只能获得一种语言。 我也尝试过去做这样的事情: // Code public static string ReadLine() { const uint nNumberOfCharsToRead = 1024; StringBuilder buffer = new StringBuilder(); uint charsRead = 0; bool result = ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buffer, nNumberOfCharsToRead, out charsRead, (IntPtr)0); // Return the input […]

在窗口应用程序中写入命令行

我正在尝试让我的基于WinForm的C#与命令行合作,但是我很难让它发挥得很好。 例如,我有这个代码: [STAThread] static void Main(string[] args) { foreach (string s in args) { System.Windows.Forms.MessageBox.Show(s); Console.WriteLine(“String: ” + s); } Mutex appSingleton = new System.Threading.Mutex(false, “WinSyncSingalInstanceMutx”); if (appSingleton.WaitOne(0, false)) { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //start logger Logger.singleton.makeOpen(true); Application.Run(new MainForm(false)); } catch (Exception) { } finally { appSingleton.Close(); Logger.singleton.makeOpen(false); } } else { System.Windows.Forms.MessageBox.Show(“Sorry, only one […]

系统托盘中的.Net控制台应用程序

有没有办法在最小化时将控制台应用程序放在系统托盘中? 我使用.Net 3.5和c#

.Net是否有任何控制台“图形”库?

我的基本目标是编写一个.NET翻拍的Kroz王国。 对于那些不熟悉游戏的人: http://www.indiefaqs.com/index.php/Kingdom_of_Kroz http://www.youtube.com/watch?v=cHwlNAFXpIw 最初它应该是一个快速的分心项目,让我从最近占据我大部分时间的所有通用企业WCF / WF / LINQ2SQL /等工作项目中rest一下。 虽然我的努力的结果是可玩的,它看起来像绝对的屁股(即使对于基于控制台的游戏),因为我重绘每个帧中的所有内容的方式。 我知道一些替代方法,但在我做过的简短测试中,他们仍然没有提供显着的性能或美学效益。 如果我可以帮助它,我不想求助于“模拟”控制台的库。 我更喜欢使用适当的Win32控制台API,但如果我可以帮助它,则不能直接使用它。 请记住,这是一个明显的利基用例,对此,“通常”接受的最佳方法是什么? 有没有人应该注意的特别优化的控制台’绘图’技术? 我不介意在PInvoke的海洋游泳和编组,只要它仍然以快速,响应和高效的控制台UI结束。

如何从WPF应用程序写入命令行?

嗨,我知道如何写入控制台,但如果我在程序中写入控制台并从命令行调用我的程序,它将不会显示任何内容。 当我说Console.WriteLine或Console.Out.Writeline ir打印到调用它的命令提示符而不是其他地方时,我该怎么做呢? 我再一次知道怎么做Console.WriteLine所以不是这样的:-p除非我做错了。 从我可以告诉它可能与Console.SetOut(TextWriter t)有关 这是一个WPF应用程序,我需要它将其数据发布到命令行,同时仍然在启动时保留GUI。 我已经三次检查并且我的代码命中了打印行,我实际上可以看到正在打印到Visual Studio输出窗口的行,当我在没有VS的情况下手动运行它时,它不会显示在命令行中。 如果可能,我需要有条件地拥有控制台显示器。 即如果从命令行运行(甚至使用命令参数),则显示或发布到提示符,否则不显示。

设置在WinForms应用程序中打开的控制台窗口的位置

我在Rex Logan发布的这个post中发现了一些源代码: 链接文字 … Foredecker在同一个post中也发布了一些非常有趣的代码,但它不完整和复杂:我对’跟踪工具知道如何完全实现它不够了… 我能够在WinForms应用程序中成功发布此控制台代码Rex(友好地),以记录各种事件,并将消息推送到调试中非常有用; 我也可以从应用程序代码中清除它。 我似乎无法做的是在打开控制台窗口时(在主窗体加载事件中)可靠地设置控制台窗口的屏幕位置。 如果我尝试设置WindowLeft或WindowTop属性,我得到编译阻止System.ArgumentOutOfRangeException错误: 必须设置窗口位置,使当前窗口大小适合控制台的缓冲区,并且数字不能为负数。 参数名称:left实际值为# 但是,我可以设置WindowWidth和WindowHeight属性。 我试过移动激活控制台各个位置的代码,包括: 在MainForm运行之前的Program.cs文件中 在MainForm ctor中调用’InitializeComponent()之前和之后 在Form Load事件中 在Form Shown活动中 控制台在代码中的所有这些位置都可以正常激活,但看似随机切换屏幕左上象限的位置没有变化。 控制台窗口打开的位置似乎随机变化(主窗体始终在屏幕上的同一位置初始化)。

在同一控制台中启动进程

我可以在与调用程序相同的控制台中启动进程(使用C# Process.Start() )吗? 这样就不会创建新窗口,标准输入/输出/错误将与调用控制台应用程序相同。 我尝试设置process.StartInfo.CreateNoWindow = true; 但是该过程仍然在一个新窗口中开始(并在完成后立即关闭)。

用C#中的每个新线程打开一个新的控制台?

我希望每当我创建一个新线程时都会打开一个新的控制台,以便组织输出。 我的应用程序完全基于控制台。 如果是这样的话会有可能吗? 问候!

如何在.Net控制台应用程序中设置默认输入值?

如何在.net控制台应用程序中设置默认输入值? 这是一些伪装代码: Console.Write(“Enter weekly cost: “); string input = Console.ReadLine(“135”); // 135 is the default. The user can change or press enter to accept decimal weeklyCost = decimal.Parse(input); 当然,我不希望它如此简单。 我打算不得不做一些低级的,无管理的东西; 我只是不知道如何。 编辑 我知道我可以用默认值替换没有输入。 这不是我要问的问题。 我试图了解实现我所描述的行为所涉及的内容:为用户提供可编辑的默认值。 我也不担心输入validation; 我的问题与此无关。