// fonction qui va être appelé lorsque l'utilisateur clique start premier private void startPremier_Click(object sender, RoutedEventArgs e) { if (listProcess.Count == 0 || ProcessNode.getPremierCount() < 5) { Process p = new Process(); p.StartInfo = new ProcessStartInfo("premier.exe"); p.EnableRaisingEvents = true; p.Exited += new EventHandler(process_Exited); p.Start(); int pid = p.Id; ProcessItem item = new ProcessItem("premier.exe", pid); listProcess.AddLast(new ProcessNode(p, "premier", item)); lvProcess.Items.Add(item); setViewCounters(ProcessNode.getBallonCount(), ProcessNode.getPremierCount()); } else { MessageBox.Show("Cannot create more than 5 processes", "Alert", MessageBoxButton.OK, MessageBoxImage.Information); } }
// mise à jour la listView lorsque l'utilisateur arrête un fênetre private void checkClosedProcess() { foreach (ProcessNode pN in listProcess) { if (pN.process.HasExited) { lvProcess.Items.Remove(pN.processViewItem); // mise à jour les compteurs correspondants if (pN.name == "ballon") { ProcessNode.setBallonCount(ProcessNode.getBallonCount() - 1); } else { ProcessNode.setPremierCount(ProcessNode.getPremierCount() - 1); } setViewCounters(ProcessNode.getBallonCount(), ProcessNode.getPremierCount()); listProcess.Remove(pN); break; } } }
// fonction qui va être appelé lorsque l'utilisateur clique stop last process private void StopLastProcess_Click(object sender, RoutedEventArgs e) { if (listProcess.Count <= 0) { MessageBox.Show("No running process", "Alert", MessageBoxButton.OK, MessageBoxImage.Information); } else { listProcess.Last().process.Kill(); lvProcess.Items.Remove(listProcess.Last().processViewItem); if (listProcess.Last().name == "ballon") { ProcessNode.setBallonCount(ProcessNode.getBallonCount() - 1); } else { ProcessNode.setPremierCount(ProcessNode.getPremierCount() - 1); } setViewCounters(ProcessNode.getBallonCount(), ProcessNode.getPremierCount()); listProcess.RemoveLast(); } }
// fonction qui va être appelé lorsque l'utilisateur clique stop last ballon private void stopLastBallon_Click(object sender, RoutedEventArgs e) { if (listProcess.Count <= 0 || ProcessNode.getBallonCount() <= 0) { MessageBox.Show("No running process for ballon.exe", "Alert", MessageBoxButton.OK, MessageBoxImage.Information); } else { for (int i = listProcess.Count - 1; i >= 0; i--) { if (listProcess.ElementAt(i).name == "ballon") { // obtenir le dernier élément de type ballon de la liste listProcess ProcessNode toRemove = listProcess.ElementAt(i); toRemove.process.Kill(); lvProcess.Items.Remove(toRemove.processViewItem); ProcessNode.setBallonCount(ProcessNode.getBallonCount() - 1); setViewCounters(ProcessNode.getBallonCount(), ProcessNode.getPremierCount()); listProcess.Remove(toRemove); break; } } } }