0
プロセス内でプロセスをエミュレートしようとしています(作成しているsshクローン用)。それは動作しますが、cmd.exe自体(see picture)とはあまりよく比較されません。画像でわかるように、エミュレートされたプロセスはコマンド(矢印で示されている)をエコーし、ときどき何かを印刷することを拒否します(円で囲まれた適切な応答)。SSHクローンを作成するには?
var startInfo = new ProcessStartInfo("cmd") {
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true
};
var shell = new Process() {
StartInfo = startInfo
};
new Thread(() => {
char[] buffer = new char[512];
int read;
while(true) {
if((read = shell.StandardOutput.Read(buffer, 0, 512)) > 0) {
Console.Out.Write(buffer, 0, read);
}
}).Start();
while(true) {
shell.StandardInput.WriteLine(Console.ReadLine());
}
shell.WaitForExit();
私は間違っていますか?
編集:私は、コードページを調整しようとしている
コンソールコードページを変更したり、コンソールに期待しているエンコーディングで書き込んだりしてください。コードページを見るには 'chcp'と打ちます。 utf-8に 'chcp 65001'を試してください。 – ACatInLove
@ACatInLoveあなたの提案を反映するために質問を編集しました。 – cschultz2048
あなたはUTF8を書いていますか? WindowsはUTF 16を内部的に使用します。 Windowsが別のウィンドウに情報を送信すると、そのウィンドウは作成された方法で処理され、IEのデータはUnicodeから開始されたにもかかわらずANSIウィンドウが取得されます。 – ACatInLove