public void LoadRecentProcessList()
        {
            try
            {
                var fileName = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ConstantsEnums.IGCSSettingsFolder),
                                            ConstantsEnums.RecentlyUsedFilename);
                if (!File.Exists(fileName))
                {
                    return;
                }

                // format:
                // processname1|dllname1|Ticks
                // processname2|dllname1|Ticks
                // processname3|dllname2|Ticks
                // ...
                // example:
                // mygame.exe|..\..\mygamecameratools.dll|2384763243
                // mygame2.exe|unlocker.dll|23462112323
                var allLines = File.ReadAllLines(fileName);
                foreach (var line in allLines)
                {
                    var parts = line.Split('|');
                    if (parts.Length != 3)
                    {
                        continue;
                    }

                    _recentProcessesWithDllsUsed[parts[0]] = new DllCacheData(parts[1], new DateTime(Convert.ToInt64(parts[2])));
                }
            }
            catch
            {
                // ignore, as we can't do much about it anyway...
            }
        }
 public void AddDllNameForProcess(string processName, string dllName)
 {
     _recentProcessesWithDllsUsed[processName] = new DllCacheData(dllName, DateTime.Now);
 }