.NET 3.x mini-FAQ по получению и убиванию процессов. - C#
Формулировка задачи:
Всем привет. Эту маленькую статью я пишу для таких новиков как я, поэтому профи, пожалуйста, не пишите типо "это и так все знают"!
Вот небольшие кодики с маленькими пояснениями. Пищу с мобилы(ну как обычно) так что ошибки синтаксиса могут быть. Если что либо не работает пишите!
Сначала в прогу необходимо добавить пространстово имен:
и добавьте листбокс. Вот пример получения процессов
Вот обработчик "убития" при выборе из списка
Следующий код автоматически убивает по имени
Ну и самое по мне интересное. Получение оконных процессов//правда я этот кусок незапускал, а просто наткнулся в инете.Прошу помидорами некидать!)
Понимаю что комментариев нету, но с мобилы много не напишешь, да и код вроде простой...
using system.diagnostic
Process[] pr; pr=process.getprocess(); foreach(Process proc in pr)// извиняйте фигурных скобок на мобиле нету... (Listbox1.items.add(proc.processname);)
pr[listbox1.selectedindicies[0].kill()] // ошибка может быть в квадратных скобках перед килл()
foreach()//не стал писать, тут тоже самое ( If(proc.processname.tolower=="name") (proc.kill(); Proc.waitforexit(); Break; ) )
Foreach(Process p in Process.GetProcesses(system.environment.MachineName)) (if (p.MainWindowHandle != IntPtr.Zero) (listbox1.items.add(p.tostring()); ) )
Решение задачи: «.NET 3.x mini-FAQ по получению и убиванию процессов.»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using System.Diagnostics; //Вот это пространство имён нужно добавить. namespace WindowsFormsApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); //свойство добавляемого объекта, которое будет отображаться //в списке в виде текста (как-то так) this.listBox1.ValueMember = "ProcessName"; } private void btnGetProcesses_Click(object sender, EventArgs e) { Process[] pr = Process.GetProcesses(); //Всё в массиве список процессов foreach (Process proc in pr) //Это уже добавление списка процессов в ListBox с именем listBox1 listBox1.Items.Add(proc); //Добавляем в список объект. //Но отображено будет название процесса, так как у listBox1 свойство ValueMember == "ProcessName" } private void btnDelSelected_Click(object sender, EventArgs e) { //Так как в список был добавлен экземпляр класса Process, то получаем к нему доступ через //SelectedItem, который возвращает тип Object. Так как любой класс наследует от Object, //то соответственно Item может ссылаться на любой объект класса. Мы добавляли в listBox1 //(listBox1.Items.Add(proc);) экземпляр класса Process. Поэтому приводим к типу Process //В listBox1 должен быть выделен элемент ((Process)listBox1.SelectedItem).Kill(); //Можно упростить строку выше для понимания новичком //Process proc = (Process)listBox1.SelectedItem; //proc.Kill(); //Это одно и тоже по сути } private void btnKillSkype_Click(object sender, EventArgs e) { foreach (Process proc in listBox1.Items) { if (proc.ProcessName == "Skype") { proc.Kill(); proc.WaitForExit(); break; //например надо убить много процессов с одним именем. Значит убираем break } } } private void btnGetWinProc_Click(object sender, EventArgs e) { //Тут походу получить процессы те, окна которых не скрыты. (не факт, но вроде так) foreach (Process p in Process.GetProcesses(Environment.MachineName)) { if (p.MainWindowHandle != IntPtr.Zero) listBox1.Items.Add(p); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д