Существует файл .exe на основе командной строки, в который я передаю параметры и хочу получить вывод в C #.Когда я непосредственно использую приглашение cmd, оно отлично работает и возвращает символы Юникода, такие как ╔ и ═, как часть вывода.
В C # я открываю процесс cmd.exe и передаю идентичные аргументы, как если бы я делалэто из командной строки cmd, и он просто ничего не возвращает.Я знаю, что это относится к символам Юникода, потому что, когда я ввожу аргументы для «справочной» информации (которая не включает в себя какой-либо Юникод), она прекрасно работает.
public string CMD(string input, bool validate=true)
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(65001);
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.Verb = "runas";
process.Start();
process.StandardInput.WriteLine(input);
process.StandardInput.Flush();
process.StandardInput.Close();
int i = 0;
string cmd_result = process.StandardOutput.ReadToEnd();
string output = "";
foreach (string line in cmd_result.Split('\n'))
{
if (3 < i && i < cmd_result.Split('\n').Count() - 2)
{
output += line;
}
i++;
}
if (validate && output == "")
{
output = "Command failed";
}
return output;
}
Вот когда я запускаю .exefile, переменная / строка url - это аргументы, которые я хочу передать в файл.
string output = CMD("qbt.exe " + url);
MessageBox.Show(output);
Всякий раз, когда программа не выводит Unicode, она отлично работает.Но если он содержит эти символы ╔ и =, вывод строки просто будет пустым.Как видно из функции CMD, я пытался добавить в процесс кодирование 65001, но это не помогло.Я также попробовал кодирование 850, но безуспешно.
Одна из идей, которые у меня были, заключалась в том, чтобы вместо этого запустить файл .bat и вывести его в файл, а затем с помощью C # просто прочитать содержимое файла.Но я сталкиваюсь с той же проблемой.