День добрый! После долгих попыток борьбы с AllocConsole, FreeConsole и т.д. Увидел, что можно обойтись и вызовом cmd, не используя WinAPI.
public static Process CreateConsole()
{
ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");
cmd.RedirectStandardInput = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.UseShellExecute = false;
cmd.CreateNoWindow = false;
cmd.WindowStyle = ProcessWindowStyle.Normal;
cmd.StandardOutputEncoding = Encoding.GetEncoding(866);
Process console = Process.Start(cmd);
return console;
}
...
//пишу примерно так:
var console = CreateConsole();
var cin = console.StandardOutput;
var cout = console.StandardInput;
cout.Write("hello");
Но этот и подобные примеры не позволяют писать в консоль. Да, она появляется, но ничего записать через StreamWriter не могу.