私は C# を学んでいて、単純な WinForms アプリケーションを作成しています。それは単純な OpenVPN クライアントを開始することです。
void button_Connect_Click(object sender, EventArgs e)
{
var proc = new Process();
proc.StartInfo.FileName = "CMD.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WorkingDirectory = @"C:\Program Files (x86)\OpenVPN\bin";
proc.StartInfo.Arguments = "/c openvpn.exe --config config.ovpn --auto-proxy";
// set up output redirection
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
// Input
proc.StartInfo.RedirectStandardInput = true;
// Other
proc.EnableRaisingEvents = true;
proc.StartInfo.CreateNoWindow = false;
// see below for output handler
proc.ErrorDataReceived += proc_DataReceived;
proc.OutputDataReceived += proc_DataReceived;
proc.Start();
StreamWriter myStreamWriter = proc.StandardInput;
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
proc.WaitForExit();
}
void proc_DataReceived(object sender, DataReceivedEventArgs e)
{
// output will be in string e.Data
if (e.Data != null)
{
string Data = e.Data.ToString();
if (Data.Contains("Enter Auth Username"))
{
myStreamWriter("myusername");
}
//MessageBox.Show(Data);
}
}
現在実行しているのは、CMD のすべての出力を私のプログラムに送信することです。このプログラムは、出力に応じてコマンドを実行します。
私の現在の問題は、ストリームに書き込む必要があることです。で使用myStreamWriter
しますproc_DataReceived
が、同じコンテキストではないため機能しません。
次のエラーが表示されます: The name 'myStreamWriter' does not exist in the current context
、これは明らかにそのスコープには存在しません。
どうすればこれを機能させることができますか? プロパティを取得/設定しますか? 私が言ったように、私はC#にまったく慣れていないので、助けていただければ幸いです。