/[RomCheater]/trunk/RomCheater.PluginFramework/Core/ConfigPlugin.cs
ViewVC logotype

Diff of /trunk/RomCheater.PluginFramework/Core/ConfigPlugin.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 86 by william, Wed May 9 19:41:06 2012 UTC revision 99 by william, Wed May 9 23:23:38 2012 UTC
# Line 4  using System.Linq; Line 4  using System.Linq;
4  using System.Text;  using System.Text;
5  using RomCheater.PluginFramework.Interfaces;  using RomCheater.PluginFramework.Interfaces;
6  using System.Diagnostics;  using System.Diagnostics;
7    using libWin32.Win32.Threading;
8    using RomCheater.Logging;
9    
10  namespace RomCheater.PluginFramework.Core  namespace RomCheater.PluginFramework.Core
11  {  {
# Line 12  namespace RomCheater.PluginFramework.Cor Line 14  namespace RomCheater.PluginFramework.Cor
14      /// </summary>      /// </summary>
15      public abstract class ConfigPlugin : PluginBase, IConfigPlugin      public abstract class ConfigPlugin : PluginBase, IConfigPlugin
16      {      {
17          public ConfigPlugin() : base() { this.ValidProcessesForPlugin = new List<Process>(); }          public ConfigPlugin() : this(false) { }
18            public ConfigPlugin(bool doinit) : base() { this.ValidProcessesForPlugin = new List<ProcContainer>(); if(doinit) init(); }
19    
20            public override void Reload()
21            {
22                logger.Debug.WriteLine(" Loading config for {0}...", this.ToString());
23                init();
24                logger.Debug.WriteLine(" Loaded config for {0}.", this.ToString());
25            }
26            private void init()
27            {
28                List<ProcContainer> proc_list = new List<ProcContainer>();
29                foreach (Process proc in Process.GetProcesses())
30                {
31                    try
32                    {
33                        bool isSystem = false;
34                        string proc_name = proc.ProcessName.ToLower();
35                        string proc_user = ThreadControl.GetProcessOwner(proc.Handle, out isSystem).ToLower();
36                        if (isSystem)
37                        {
38                            logger.VerboseDebug.WriteLine("    not adding process {0} because it is a system process", proc_name);
39                            continue;
40                        }
41                        ProcContainer container = null;
42                        try
43                        {                      
44                            container = new ProcContainer(proc);
45                            logger.VerboseDebug.WriteLine("  adding process {0} ", proc_name);
46                        }
47                        catch (Exception ex)
48                        {
49                            //throw;
50                            logger.VerboseDebug.WriteLine("    not adding process {0} because it thew an exception [{1}]", proc_name, ex.Message);
51                            continue;
52                        }
53                        proc_list.Add(container);
54                    }
55                    catch (System.ComponentModel.Win32Exception)
56                    {
57                        continue;
58                    }
59                    catch (Exception)
60                    {
61                        continue;
62                    }
63                }
64                proc_list = proc_list.OrderBy(p => p.Name).ToList();
65                Predicate<ProcContainer> predicate = new Predicate<ProcContainer>(IsNotValidProcess);
66                proc_list.RemoveAll(predicate);
67                ValidProcessesForPlugin = proc_list;
68            }
69    
70            protected abstract bool IsNotValidProcess(ProcContainer p);
71    
72          #region IConfigPlugin Members          #region IConfigPlugin Members
73          public List<Process> ValidProcessesForPlugin { get; protected set; }          public List<ProcContainer> ValidProcessesForPlugin { get; protected set; }
74          public override Guid Id          public override Guid ID
75          {          {
76              get { return new Guid(); }              get { return new Guid(); }
77          }          }

Legend:
Removed from v.86  
changed lines
  Added in v.99

  ViewVC Help
Powered by ViewVC 1.1.22