Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }