C # Как добавить новые процессы в список процессов, используя флажок - PullRequest
0 голосов
/ 27 августа 2018

Я пишу приложение Windows Forms для утилиты очистки, в которой приложение Windows Form будет выполнять несколько командных файлов с одинаковыми атрибутами процесса для очистки различных частей компьютера, это то, что я пока имею,

ProcessStartInfo[] infos = new ProcessStartInfo[]
{
    new ProcessStartInfo(Environment.CurrentDirectory + @"example batch file 1"),
    new ProcessStartInfo(Environment.CurrentDirectory + @"example batch file 2"),
};

Затем я выполняю их,

Process[] startedProcesses = StartProcesses(infos, true);

Атрибуты для каждого процесса содержатся внутри,

public Process[] StartProcesses(ProcessStartInfo[] infos, bool waitForExit)
    {
        ArrayList processesBuffer = new ArrayList();
        foreach (ProcessStartInfo info in infos)
        {
            Process process = Process.Start(info);

            if (waitForExit)
            {
                process.StartInfo.UseShellExecute = true;
                process.StartInfo.Verb = "runas";
                process.WaitForExit();
            }
        }
    }

Проблема в том, что я хочу добавить новые пакетные файлы в список с помощью операторов if, поскольку я хочу, чтобы пользователь управлял тем, какие пакетные файлы выполняются с помощью флажка в списке, например,

ProcessStartInfo[] infos = new ProcessStartInfo[]
{
    if (checkedListBox1.GetItemCheckState(0) == CheckState.Checked)
        {
            new ProcessStartInfo(Environment.CurrentDirectory + @"example batch file 1"),
        }
    if (checkedListBox1.GetItemCheckState(1) == CheckState.Checked)
        {
            new ProcessStartInfo(Environment.CurrentDirectory + @"example batch file 2"),
        }
};

Но это не работает ... Есть ли что-нибудь вокруг этого?

С уважением, Джейкоб

1 Ответ

0 голосов
/ 27 августа 2018

В последнем фрагменте кода у вас были синтаксические ошибки, потому что это неправильный способ заполнения массива.Я изменил его, так что это простой пример и использует список.Запускает приложения на основе отмеченных пунктов.И вы должны показать, какие именно ошибки у вас были.

private void button1_Click(object sender, EventArgs e)
    {
        List<ProcessStartInfo> startInfos = new List<ProcessStartInfo>();

        if (checkedListBox1.GetItemChecked(0))
        {
            startInfos.Add(new ProcessStartInfo("notepad.exe"));
        }
        if (checkedListBox1.GetItemChecked(1))
        {
            startInfos.Add(new ProcessStartInfo("calc.exe"));
        }
        if (checkedListBox1.GetItemChecked(2))
        {
            startInfos.Add(new ProcessStartInfo("explorer.exe"));
        }

        foreach (var startInfo in startInfos)
        {
            Process.Start(startInfo);
        }
    }
...