Существует ли способ создать вторую консоль для вывода к в.NET при записи консольного приложения?

Здесь запрос дыры:

SELECT idperson, name
FROM movie.people
WHERE idperson LIKE '23'
OR idperson LIKE '1'
OR idperson LIKE '24'
OR idperson LIKE '25'
OR idperson LIKE '26'
OR idperson LIKE '27'
OR idperson LIKE '28'
OR idperson LIKE '29'
ORDER BY FIND_IN_SET(idperson,'23,1,24,25,26,27,28,29');
17
задан GEOCHET 30 March 2009 в 13:51
поделиться

3 ответа

Ну, Вы могли запустить новый процесс cmd.exe и использовать stdio и stdout, чтобы отправить и получить данные.

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe")
{
    RedirectStandardError = true,
    RedirectStandardInput = true,
    RedirectStandardOutput = true,
    UseShellExecute = false
};

Process p = Process.Start(psi);

StreamWriter sw = p.StandardInput;
StreamReader sr = p.StandardOutput;

sw.WriteLine("Hello world!");
sr.Close();

Больше информации о MSDN.

19
ответ дан 30 November 2019 в 13:40
поделиться

Единственная консоль присоединена к любому данному процессу. Так короче говоря Вы не можете. Но существуют способы "фальсифицировать его"

-2
ответ дан 30 November 2019 в 13:40
поделиться

Следующее исчерпывает зависящее от приложения количество консолей и хранит сумму и параметры для консоли в Строковом Словаре, который затем циклично выполняется для генерации необходимого количества порожденных консольных приложений. Вам только был бы нужен материал процесса, только меча икру один, конечно.

//Start looping dic recs and firing console
foreach (DictionaryEntry tests in steps)
{
    try
    {
        Process runCmd = new Process();
        runCmd.StartInfo.FileName = CONSOLE_NAME;
        runCmd.StartInfo.UseShellExecute = true;
        runCmd.StartInfo.RedirectStandardOutput = false;
        runCmd.StartInfo.Arguments = tests.Value.ToString();

        if (cbShowConsole.Checked)
        {
            runCmd.StartInfo.CreateNoWindow = true;
            runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
        }
        else
        {
            runCmd.StartInfo.CreateNoWindow = false;
            runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
        }
        runCmd.Start();                
    }
    catch (Exception ex)
    {
        string t1 = ex.Message;
    }
}

Обратите внимание, что это предназначается или для выполнения скрытый (CreateNoWindow) или видимый.

4
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: