void UpdateTaskList(PushTaskManagerListElement element) { foreach (ListViewItem ll in lstTasks.Items) { if (((PushTaskManagerListElement)ll.Tag).ProcessID == element.ProcessID) { ll.Tag = element; ll.SubItems[3].Text = CommonUtilities.NiceSize(element.PrivateBytes); ll.SubItems[4].Text = CommonUtilities.NiceSize(element.WorkingSet); ll.SubItems[10].Text = element.TotalProcessorTime.ToString(); ll.SubItems[11].Text = element.UserProcessorTime.ToString(); return; } } ListViewItem l = new ListViewItem(element.ProcessName); l.Tag = element; l.SubItems.Add(data.Is64Bit == false ? "32 bit" : (element.IsWOWProcess == true ? "32 bit" : "64 bit")); l.SubItems.Add(element.ProcessID.ToString()); l.SubItems.Add(CommonUtilities.NiceSize(element.PrivateBytes)); l.SubItems.Add(CommonUtilities.NiceSize(element.WorkingSet)); l.SubItems.Add(element.Description); l.SubItems.Add(element.CompanyName); l.SubItems.Add(element.Username); l.SubItems.Add(element.Filename); l.SubItems.Add(element.Arguments); l.SubItems.Add(element.TotalProcessorTime.ToString()); l.SubItems.Add(element.UserProcessorTime.ToString()); lstTasks.Items.Add(l); }
private void cmdKill_Click(object sender, EventArgs e) { if (lstTasks.SelectedItems.Count == 0) { return; } PushTaskManagerListElement l = (PushTaskManagerListElement)lstTasks.SelectedItems[0].Tag; if (MessageBox.Show(this, "Do you want to kill the process " + l.ProcessName + " (PID: " + l.ProcessID.ToString() + ")?", Program.Title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) != DialogResult.Yes) { return; } Program.net.PushKillTask(MID, l.ProcessID); }
public static PushTaskManagerList GetTasks() { PushTaskManagerList tl = new PushTaskManagerList(); tl.Tasks = new List <PushTaskManagerListElement>(); ManagementClass mc = new ManagementClass("Win32_Process"); foreach (ManagementBaseObject mo in mc.GetInstances()) { PushTaskManagerListElement element = new PushTaskManagerListElement(); element.ProcessID = Convert.ToInt32(mo["ProcessId"]); element.Filename = Convert.ToString(mo["ExecutablePath"]); element.Arguments = Convert.ToString(mo["CommandLine"]); element.ProcessName = Convert.ToString(mo["Caption"]); element.SessionID = Convert.ToInt32(mo["SessionId"]); element.StartTime = ManagementDateTimeConverter.ToDateTime(Convert.ToString(mo["CreationDate"])).ToUniversalTime(); element.UserProcessorTime = TimeSpan.FromTicks(Convert.ToInt64(mo["UserModeTime"])); element.TotalProcessorTime = TimeSpan.FromTicks(Convert.ToInt64(mo["UserModeTime"]) + Convert.ToInt64(mo["KernelModeTime"])); element.WorkingSet = Convert.ToInt64(mo["WorkingSetSize"]); element.PrivateBytes = Convert.ToInt64(mo["VirtualSize"]); if (string.IsNullOrWhiteSpace(element.Filename) == false) { FileVersionInfo ver = FileVersionInfo.GetVersionInfo(element.Filename); element.CompanyName = ver.CompanyName; element.Description = ver.FileDescription; } element.Username = "******"; element.ParentProcessID = 0; element.IsWOWProcess = false; Process proc = Process.GetProcessById(element.ProcessID); IntPtr processHandle = IntPtr.Zero; try { if (OpenProcessToken(proc.Handle, 8, out processHandle) == true) { WindowsIdentity wi = new WindowsIdentity(processHandle); element.Username = wi.Name; ParentProcessUtilities pbi = new ParentProcessUtilities(); int returnLength; int status = NtQueryInformationProcess(proc.Handle, 0, ref pbi, Marshal.SizeOf(pbi), out returnLength); if (status == 0) { element.ParentProcessID = pbi.InheritedFromUniqueProcessId.ToInt32(); } IsWow64Process(proc.Handle, out element.IsWOWProcess); } } catch (Exception ee) { Debug.WriteLine(ee.ToString()); } finally { if (processHandle != IntPtr.Zero) { CloseHandle(processHandle); } } tl.Tasks.Add(element); } return(tl); }