Я запускаю инструмент cmd с использованием C # и показываю его вывод в асинхронном режиме в текстовом поле.
Здесь я использовал коды .
Все работает нормально.Начальное сообщение и остановка сообщения от целевого инструмента cmd вставят в текстовое поле.Но есть небольшая проблема.
У инструмента Target cmd есть индикатор выполнения, но он не будет отображаться, пока пользователь не нажмет клавишу внутри инструмента во время его работы, тогда пользователь может увидеть, например, 50%, если снова нажать клавишу, он увидит70% до конца.
Я пытался установить таймер и отправить ключ этому процессу, используя дескриптор процесса, но не получил желаемый результат:
private void Button1_Click(object sender, EventArgs e)
{
process = new ProcessWrapper("C:\\Program Files (x86)\\CmdTool.exe", "someArgs");
process.OutputDataReceived += (senderz, eventArgs) => SetText($"{textBox1.Text}" + $"{eventArgs.Data}" + Environment.NewLine);
process.Start();
processHandle = process.Handle;
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 5000;
aTimer.Enabled = true;
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
if (!process.HasExited)
{
SetForegroundWindow(processHandle);
SendKeys.SendWait("k");
}
}
Я дажепробовал Process.Refresh()
на таймере, но ничего.Как решить эту проблему?