我正在使用C#启动cmd工具,并在文本框中异步显示其输出。
我使用了代码from here。
一切正常。来自目标cmd工具的启动消息和停止消息将插入到文本框中。但是有一个小问题。
目标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()
,但是什么也没有。如何解决这个问题?