/// <summary>
        /// This method checks the completed message.
        /// </summary>
        /// <param name="sender"> The object sender. </param>
        /// <param name="e"> The byte event args. </param>
        private void CheckCompletedMessage(object sender, ByteMessageEventArgs e)
        {
            ProcessListMessage messageType = new ProcessListMessage();
            Ping pingType = new Ping();

            if (e.Message[0] == (byte)messageType.Type)
            {
                List <byte> list     = e.Message.ToList();
                List <byte> hostname = new List <byte>();

                list.RemoveAt(0);

                int hostNameLength = list[0];

                for (int i = 0; i < hostNameLength; i++)
                {
                    hostname.Add(list[i + 1]);
                }

                this.HostName = Encoding.UTF8.GetString(hostname.ToArray());

                list.RemoveRange(0, hostname.Count + 1);

                ProcessListContainer container = NetworkDeSerealizer.DesSerealize(list.ToArray());

                this.FireOnMessageCompleted(new ProcessListEventArgs(container));

                this.ResetTimer();
            }
            else if (e.Message[0] == (byte)pingType.Type)
            {
                this.ResetTimer();
            }
        }
        /// <summary>
        /// This method gets a container that contains all current processes.
        /// </summary>
        /// <returns> It returns a <see cref="ProcessListContainer"/>. </returns>
        public ProcessListContainer InitializeNewProcesses()
        {
            ProcessListContainer listContainer = new ProcessListContainer();

            listContainer.NewProcesses = this.OldProcessList;
            listContainer.OldProcesses = this.OldProcessList;

            return(listContainer);
        }
        /// <summary>
        /// This method gets all current processes.
        /// </summary>
        private void GetAllCurrentProcesses()
        {
            foreach (var item in Process.GetProcesses())
            {
                this.OldProcessList.Add(new ProcessContainer(item));
            }

            ProcessListContainer init = new ProcessListContainer();

            init.NewProcesses = this.OldProcessList;
            this.FireOnProcessChanged(new ProcessListEventArgs(init));
        }
Esempio n. 4
0
 /// <summary>
 /// This method fires when a client has been connected. And starts either the process watcher or sends the current processes to the new client.
 /// </summary>
 /// <param name="sender"> The object sender. </param>
 /// <param name="e"> The event args. </param>
 public void ClientConnected(object sender, EventArgs e)
 {
     if (this.watcher.IsRunning != true)
     {
         try
         {
             this.watcher.Start();
         }
         catch (Exception ex)
         {
             this.FireOnErrorMessagePrint(new StringEventArgs(ex.Message));
         }
     }
     else
     {
         ProcessListContainer listContainer = this.watcher.InitializeNewProcesses();
         this.OnProcessChanged(null, new ProcessListEventArgs(listContainer));
     }
 }
        /// <summary>
        /// This method compares the new processes with the old processes.
        /// </summary>
        /// <returns> It returns a container with the changed processes. </returns>
        private ProcessListContainer CompareNewProcessesWithCurrentProcesses()
        {
            ProcessListContainer processListContainer = new ProcessListContainer();

            foreach (var item in this.NewProcessList)
            {
                if (this.OldProcessList.Where(x => x.Id == item.Id).Count() == 0)
                {
                    // New Process
                    processListContainer.NewProcesses.Add(item);
                    continue;
                }

                for (int i = 0; i < this.OldProcessList.Count; i++)
                {
                    if (item.Id == this.OldProcessList[i].Id)
                    {
                        // Changed Process
                        if (this.OldProcessList[i].IsProcessDifferent(item))
                        {
                            processListContainer.OldProcesses.Add(this.OldProcessList[i]);
                            processListContainer.NewProcesses.Add(item);
                        }

                        break;
                    }
                }
            }

            foreach (var item in this.OldProcessList)
            {
                if (this.NewProcessList.Where(x => x.Id == item.Id).Count() == 0)
                {
                    // Process killed
                    processListContainer.OldProcesses.Add(item);
                    continue;
                }
            }

            return(processListContainer);
        }
Esempio n. 6
0
        /// <summary>
        /// This method updates the processes.
        /// </summary>
        /// <param name="sender"> The object sender. </param>
        /// <param name="e"> The process list. </param>
        private void GetNewProcesses(object sender, ProcessListEventArgs e)
        {
            List <ProcessContainer> temp = new List <ProcessContainer>();

            foreach (var item in this.Processes)
            {
                temp.Add(item);
            }

            if (this.Processes.Count > 0)
            {
                foreach (var item in e.List.OldProcesses)
                {
                    foreach (var oldProcesses in this.Processes)
                    {
                        if (item.Id == oldProcesses.Id)
                        {
                            temp.Remove(oldProcesses);
                        }
                    }
                }
            }

            this.Processes = temp;

            foreach (var item in e.List.NewProcesses)
            {
                this.Processes.Add(item);
            }

            ProcessListContainer container = new ProcessListContainer();

            foreach (var item in this.Processes)
            {
                container.NewProcesses.Add(item);
            }

            this.FireOnProcessChanged(new ProcessListEventArgs(container));
        }