Exemplo n.º 1
0
        private static void UpdateProcesses()
        {
            foreach (var process in Process.GetProcesses().OrderBy(x => x.ProcessName))
            {
                //Be self aware.
                if (process.Id == ThisProcess.Id)
                {
                    continue;
                }

                var toLower = process.ProcessName.ToLower();

                if (Ignore.Contains(toLower))
                {
                    continue;
                }

                if (CachedProcesses.ContainsKey(toLower) && CachedProcesses[toLower].ContainsKey(process.Id))
                {
                    continue;
                }
                else
                {
                    PProcess pp = new PProcess()
                    {
                        Process        = process,
                        RoutingEnabled = SerializationHandler.Configuration.Processes.Any(p => p.ProcessName.Equals(process.ProcessName)),
                    };

                    if (IconGrabber.TryGetIconBitmap(process, 16, out Bitmap icon))
                    {
                        pp.Icon = icon;
                    }
                    else
                    {
                        // If we fail to load the icon, we probably dont have access rights to the given process,
                        // we wont be able to hook the socket, so from now on, we ignore this process.
                        Ignore.Add(toLower);
                        continue;
                    }

                    if (!CachedProcesses.ContainsKey(toLower))
                    {
                        CachedProcesses.Add(toLower, new Dictionary <int, PProcess>());
                    }

                    if (!CachedProcesses[toLower].ContainsKey(process.Id))
                    {
                        CachedProcesses[toLower].Add(process.Id, pp);
                    }
                }
            }

            //Notify UI the latest processes.
            ProcessesUpdated?.Invoke(null, null);
        }
Exemplo n.º 2
0
 public static bool TryMatchProcess(string processName, out PProcess oProcess)
 {
     oProcess = null;
     try
     {
         if (CachedProcesses.ContainsKey(processName))
         {
             oProcess = CachedProcesses[processName].Values.First();
             return(oProcess.RoutingEnabled);
         }
     }
     catch { }
     return(false);
 }
Exemplo n.º 3
0
 public static bool HasRoutingEnabled(string processName, out PProcess target)
 {
     target = null;
     try
     {
         if (CachedProcesses.ContainsKey(processName))
         {
             target = CachedProcesses[processName].Values.First();
             return(CachedProcesses[processName].Values.First().RoutingEnabled);
         }
     }
     catch { }
     return(false);
 }
Exemplo n.º 4
0
 public void Dispose()
 {
     Dt     = null;
     Caller = null;
     Url    = string.Empty;
 }
Exemplo n.º 5
0
 public RoutingEventArgs(PProcess p, string u) : base()
 {
     this.Dt     = DateTime.Now.ToString();
     this.Caller = p;
     this.Url    = u;
 }