سلام وقت بخیر
فرض کنید یک برنامه ای وجود داره که بصورت کنسول نوشته شده که هنگام اجرا بدین صورت به نمایش درمی اید :
بعد از اجرا درحالت عادی تا زمانی که کلیدی فشرده نشه برنامه همچنان در حالت اجرا باقی هست و بعد از تایپ هرکاراکتر یا ارسال کلید اینتر این برنامه بسته میشه.
حالا مساله اینجاست میخواستم این برنامه را داخل سی شارپ اجرا کنم و به محتویات قسمت مشخص شده دسترسی پیداکنم برای همین بدین صورت دستورشو نوشتم :
Process My_process = new Process();
My_process.StartInfo.FileName=Application.StartupP ath + @"\generator.exe";
My_process.StartInfo.UseShellExecute = false;
My_process.StartInfo.RedirectStandardOutput = true;
My_process.Start();
string result = My_process.StandardOutput.ReadToEnd();
MessageBox.Show(result);
اما خروجی این دستور زمانی کارمیکنه که برنامه مربوطه بسته بشه ....حالا با ارسال چند کاراکتر به این پنجره یا ارسال کلید اینتر یا بستن آن...اما هرکارکردم نتونستم این موارد رو پیاده کنم.
ممنون میشوم راهنمایی کنید.
همچنین با استفاده از Task تایم اوتی را مشخص کردم اما دراین حالت کلا بعد از زمان مربوطه خروجی خالیست !
Process My_process = new Process();
My_process.StartInfo.FileName = Application.StartupPath + @"\generator.exe";
My_process.StartInfo.UseShellExecute = false;
My_process.StartInfo.RedirectStandardOutput = true;
My_process.Start();
int timeout = 5000;
var task = My_process.StandardOutput.ReadToEndAsync();
if (await Task.WhenAny(task, Task.Delay(timeout)) == task)
{
}
else
{
My_process.Kill();
MessageBox.Show(task.Result);
}