PDA

View Full Version : اجرای یک برنامه تحت کنسول و ارسال دکمه enter



samiasoft
پنج شنبه 13 شهریور 1399, 15:46 عصر
سلام وقت بخیر

فرض کنید یک برنامه ای وجود داره که بصورت کنسول نوشته شده که هنگام اجرا بدین صورت به نمایش درمی اید :


http://s11.picofile.com/file/8407557168/11.jpg
بعد از اجرا درحالت عادی تا زمانی که کلیدی فشرده نشه برنامه همچنان در حالت اجرا باقی هست و بعد از تایپ هرکاراکتر یا ارسال کلید اینتر این برنامه بسته میشه.

حالا مساله اینجاست میخواستم این برنامه را داخل سی شارپ اجرا کنم و به محتویات قسمت مشخص شده دسترسی پیداکنم برای همین بدین صورت دستورشو نوشتم :
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);

}