gpt4 book ai didi

c# - 静默执行进程/程序

转载 作者:行者123 更新时间:2023-11-30 18:01:14 25 4
gpt4 key购买 nike

我正在创建一个需要先决条件的 wpf 应用程序。如果不满足先决条件,那么我会询问用户是否愿意安装恰好是以下先决条件的先决条件:Microsoft Visual C++ 2010 SP1 Redistributable Package .

因此,如果用户选择安装先决条件,我将执行 vcredist_x86.exe(即从我提供的第一个链接下载的文件)。

然后在我的应用程序上,我将能够通过执行以下操作来判断安装何时完成:

ProcessStartInfo psi = new ProcessStartInfo(@"vcredist_x86.exe");
var p = new Process(); p.StartInfo = psi;

p.Start(); //start the process
p.WaitForExit(); // wait for the installation to finish

// installation should be done now

好的,到目前为止一切正常。 问题是我的 wpf 应用程序中有一个进度条,我想在其中显示进度。

我已经能够通过执行以下操作来显示安装进度:

有一个程序叫AutoIt它非常适合自动执行简单任务。例如,我可以使用类似以下内容的 autoit 轻松检测窗口是否存在:enter image description here

然后我可以编译该脚本并创建一个非常小的可执行文件。 在该可执行文件中,如果指定的窗口存在,我将返回 1,否则返回 0。

当用户移动到下一个窗口时,我的脚本可能会返回 2,因为那是一个不同的窗口。 AutoIt 还可以看到一个窗口的进度条的进度!!!例如,如果该脚本返回 80,那么我会将我的进度更新为 80%。

我通过做类似的事情来做到这一点:

// start the autoitExecutable....

// wait for executable to exit usually takes 10 miliseconds it is fast

if (autoitProcess.ExitCode == 1)
{
// do somthing
}else if(autoitProcess.ExitCode == 2)
{
// do something else
} //etc....

如您所见,我必须每 1 秒执行一次该脚本,以检测已完成的更改,以便更新我在 WPF 中的进度条。这行得通,但每次我用 c# 执行该可执行文件时,我都会得到:

enter image description here

光标停留约 500 毫秒,然后在下一秒再次出现。即使没有窗口出现,这也变得很烦人。如果我能摆脱那个游标并以某种方式默默地执行那个可执行文件,那就太好了。当我执行 autoit 可执行文件时,没有显示任何窗口,也没有其他任何内容。

附言

我知道我可以使用 c# 来检查窗口是否存在,也许可以看到其他窗口的处理程序的值,就像 autoit 能够做到的那样,但是使用 AutoIt 创建这些程序非常简单,而且会很好如果我可以使用 AutoIt 而不是 C# 来完成这种任务

最佳答案

当 exe 设置为“windows 应用程序”而不是“控制台应用程序”时,我看到了这种行为。

将类型更改为控制台不会再在启动时出现繁忙的光标。

关于c# - 静默执行进程/程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com