Ejemplo n.º 1
0
        public DetailsForm(ProcessInformation selectedProcessInformation)
        {
            InitializeComponent();


            SelectedProcessInformation = selectedProcessInformation;
            Text = String.Format("Свойства: {0} ({1})", SelectedProcessInformation.Name, SelectedProcessInformation.PID);
            InitializeProcessData();
            ActiveControl = label1;
        }
        /// <summary>
        /// Получает информацию обо всех процессах, существующих в данный момент в операционной системе
        /// </summary>
        /// <returns>Массив объектов ProcessInformation, соответствующих существующим процессам</returns>
        public static ProcessInformation[] GetProcessesInformation()
        {
            Process[] processes = Process.GetProcesses();

            ProcessInformation[] processesInformation = new ProcessInformation[processes.Length];
            for (int i = 0; i < processesInformation.Length; i++)
            {
                processesInformation[i] = new ProcessInformation(processes[i]);
            }

            return(processesInformation);
        }
Ejemplo n.º 3
0
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            /*ProcessInformation[] processesInformationToForm2 = new ProcessInformation[processesInformation.Length];
             * for (int i = 0; i < processesInformationToForm2.Length; i++)
             * {
             *  processesInformationToForm2[i] = new ProcessInformation(processesInformation[i]);
             * }*/

            ListViewItem       doubleClickedListViewItem  = (sender as ListView).FocusedItem;
            ProcessInformation selectedProcessInformation = Array.Find <ProcessInformation>(processesInformation,
                                                                                            pi => pi.PID == Int32.Parse(doubleClickedListViewItem.SubItems[1].Text));

            DetailsForm form2 = new DetailsForm(selectedProcessInformation);

            form2.Show();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Обновляет данные в элементе формы listView1
        /// </summary>
        private void RenewDataInListView()
        {
            processesInformation = ProcessInformation.GetProcessesInformation();
            Array.Sort <ProcessInformation>(processesInformation, processesInformationComparison);

            if (processesInformation.Length == listView1.Items.Count) //если число процессов не изменилось, но могли измениться сами процессы,
            {
                for (int i = 0; i < listView1.Items.Count; i++)       //то нужно переписать текстовую информацию в listView1
                {
                    if (listView1.Items[i].Text != processesInformation[i].Name)
                    {
                        listView1.Items[i].Text = processesInformation[i].Name;
                    }
                    if (listView1.Items[i].SubItems[1].Text != String.Format("{0}", processesInformation[i].PID))
                    {
                        listView1.Items[i].SubItems[1].Text = String.Format("{0}", processesInformation[i].PID);
                    }
                }
            }
            else if (processesInformation.Length > listView1.Items.Count) //если число процессов увеличилось,
            {
                for (int i = 0; i < listView1.Items.Count; i++)           //то нужно переписать текстовую информацию в listView1
                {
                    if (listView1.Items[i].Text != processesInformation[i].Name)
                    {
                        listView1.Items[i].Text = processesInformation[i].Name;
                    }
                    if (listView1.Items[i].SubItems[1].Text != String.Format("{0}", processesInformation[i].PID))
                    {
                        listView1.Items[i].SubItems[1].Text = String.Format("{0}", processesInformation[i].PID);
                    }
                }

                ListViewItem listViewItem;
                for (int i = listView1.Items.Count; i < processesInformation.Length; i++)//и добавить в него новые записи
                {
                    listViewItem = new ListViewItem(processesInformation[i].Name);
                    listViewItem.SubItems.Add(String.Format("{0}", processesInformation[i].PID));
                    listView1.Items.Add(listViewItem);
                }
            }
            else if (processesInformation.Length < listView1.Items.Count) //если число процессов уменьшилось
            {
                for (int i = 0; i < processesInformation.Length; i++)     //то нужно переписать текстовую информацию в listView1
                {
                    if (listView1.Items[i].Text != processesInformation[i].Name)
                    {
                        listView1.Items[i].Text = processesInformation[i].Name;
                    }
                    if (listView1.Items[i].SubItems[1].Text != String.Format("{0}", processesInformation[i].PID))
                    {
                        listView1.Items[i].SubItems[1].Text = String.Format("{0}", processesInformation[i].PID);
                    }
                }

                int numberOfDeletingItems = listView1.Items.Count - processesInformation.Length;                        //количество записей для удаления нужно посчитать заранее, так как this.listView1.Items.Count немедленно изменяется при удалении элементов
                for (int i = processesInformation.Length; i < processesInformation.Length + numberOfDeletingItems; i++) //и удалить остальные записи
                {
                    listView1.Items.RemoveAt(processesInformation.Length);                                              //при удалении i-го элемента коллекции, индексы всех последующих элементов уменьшаются на 1
                }
            }
        }
 public ProcessInformation(ProcessInformation processInformation)
 {
     process = processInformation.process;
     PID     = processInformation.PID;
     Name    = processInformation.Name;
 }