首先,很抱歉我无法给出正确的标题。在搜索、搜索和搜索之后,我几乎整天都被一个想法困扰着,直到我决定在 Stackoverflow 上问它!
所以这就是我卡住的地方:
(我正在制作一个当前用 C# 编码的自动安装程序,它是荷兰语。它真的很棒,但我只需要一件事来完成我的基础。例如:
- 您在复选框中选择了“多个”对象,这些对象是从复选框本身读取的,它们被修剪并在此之后启动。
现在一切正常,我想添加一个等待方法,例如我们得到:
- Malwarebytes 和 CCleaner 作为安装“示例”。
现在,当两者都被选中时,我单击开始,它会启动这两个程序。我想做的是:告诉程序启动一个程序,做你的事情,一旦它完成(关闭)它应该去下一个。
但是...有一个问题,我的程序是在一个数组中启动的,所以如果检查了多个对象,它基本上可以工作,而不是启动所有检查的对象。而且我真的不知道如何达到同样的目的,基本上是:
- 如果选择了多个对象,请启动对象,执行您的操作(自动单击等),一旦关闭并确认已关闭,则继续执行下一个对象并执行相同的操作,直到完成。我想让它与进度条一起工作,但从来没有真正研究过进度条,因为它们看起来很混乱。
我有一段代码可以找到进程 ID,所以也许我可以用它做点什么,但是进程 ID 在我启动的应用程序上永远不会相同,所以当它们以数组启动时,我遇到了一个问题。
有人可以帮我弄清楚什么以及如何编码/执行此操作吗?
这是我用来完成这项工作的代码:
string pad = Application.StartupPath;
foreach (string checkedItem in checkedListBox1.CheckedItems)
{
if (checkedItem.Contains("."))
{
string str = checkedItem;
if (str.Contains("."))
{
int index = str.IndexOf('.');
string folder = str.Substring(0, index);
try
{
bool started = false;
var process = new Process();
process.StartInfo.FileName = pad + "/data/" + folder + "/" + checkedItem;
started = process.Start();
var processID = process.Id;
var processNAAM = process.ProcessName;
textBox1.Text += "Gevonden - ID: " + processID + " NAAM: " + processNAAM + Environment.NewLine;
textBox1.Text += DateTime.Now.ToString("HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo) + " - " + "Installatie Keuze wordt opgestart." + Environment.NewLine;
process.WaitForExit();
}
catch (Exception)
{
}
}
}
}