示例#1
0
 private void explainToolStripMenuItem_Click(object sender, EventArgs e)
 {
     foreach (ListViewItem lvi in listView1.SelectedItems)
     {
         UserAssistEntry uae = (UserAssistEntry)lvi.Tag;
         frmExplain      fe  = new frmExplain();
         fe.title       = uae.ReadableName;
         fe.explanation = uae.Explain();
         fe.ShowDialog();
         fe.Dispose();
     }
 }
示例#2
0
        private void clearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UserAssistKey uak;

            foreach (ListViewItem lvi in listView1.SelectedItems)
            {
                UserAssistEntry uae = (UserAssistEntry)lvi.Tag;
                uak.key   = lvi.SubItems[0].Text;
                uak.index = int.Parse(lvi.SubItems[1].Text);
                UAE.ClearValue(uak.key, uae.name);
                UAE.entries.Remove(uak);
                lvi.Remove();
            }
        }
示例#3
0
        public List <UserAssistEntry> GetUserAssistEntries()
        {
            List <UserAssistEntry> entries = new List <UserAssistEntry>();

            try
            {
                RegistryKey userAssistKey = Registry.CurrentUser.OpenSubKey(_USER_ASSIST_REG_KEY);
                string[]    subkeyNames   = userAssistKey.GetSubKeyNames();

                foreach (string subkeyName in subkeyNames)
                {
                    if (subkeyName.StartsWith(_EXECUTABLE_FILE_REG_KEY_PREFIX) || subkeyName.StartsWith(_SHORTCUT_REG_KEY_PREFIX))
                    {
                        RegistryKey executablesFilesSubkey = userAssistKey.OpenSubKey(subkeyName);
                        RegistryKey countSubkey            = executablesFilesSubkey.OpenSubKey(_COUNT_REG_KEY);

                        string[] valueNames = countSubkey.GetValueNames();

                        foreach (string valueName in valueNames)
                        {
                            UserAssistEntry uae = new UserAssistEntry();

                            //decoding information from https://intotheboxes.files.wordpress.com/2010/04/intotheboxes_2010_q1.pdf

                            byte[] value    = (byte[])countSubkey.GetValue(valueName);
                            long   fileTime = BitConverter.ToInt64(value, 60);

                            uae.Path            = ROT13Decoder.Decode(valueName);
                            uae.LastLaunchTime  = DateTime.FromFileTime(fileTime);
                            uae.RunCount        = BitConverter.ToInt32(value, 4);
                            uae.FocusCount      = BitConverter.ToInt32(value, 8);
                            uae.FocusTimeMillis = BitConverter.ToInt32(value, 12);

                            entries.Add(uae);
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
            } catch (Exception exc)
            {
                MyDebugger.Instance.LogMessage(exc, DebugVerbocity.Exception);
            }

            return(entries);
        }
示例#4
0
        public int Compare(object x, object y)
        {
            ListViewItem    lviA   = (ListViewItem)x;
            ListViewItem    lviB   = (ListViewItem)y;
            UserAssistEntry uaeA   = (UserAssistEntry)lviA.Tag;
            UserAssistEntry uaeB   = (UserAssistEntry)lviB.Tag;
            int             result = 0;

            switch (lviA.ListView.Columns[CurrentColumn].Name)
            {
            case "Key":
            case "Name":
            case "Unknown":
                result = String.Compare(lviA.SubItems[CurrentColumn].Text, lviB.SubItems[CurrentColumn].Text);
                break;

            case "Session":
                if (!uaeA.session.HasValue && !uaeB.session.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.session.HasValue && uaeB.session.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.session.HasValue && !uaeB.session.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.session.Value.CompareTo(uaeB.session.Value);
                }
                break;

            case "Counter":
                if (!uaeA.count.HasValue && !uaeB.count.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.count.HasValue && uaeB.count.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.count.HasValue && !uaeB.count.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.count.Value.CompareTo(uaeB.count.Value);
                }
                break;

            case "Last":
                if (!uaeA.last.HasValue && !uaeB.last.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.last.HasValue && uaeB.last.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.last.HasValue && !uaeB.last.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.last.Value.CompareTo(uaeB.last.Value);
                }
                break;

            case "Last UTC":
                if (!uaeA.lastutc.HasValue && !uaeB.lastutc.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.lastutc.HasValue && uaeB.lastutc.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.lastutc.HasValue && !uaeB.lastutc.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.lastutc.Value.CompareTo(uaeB.lastutc.Value);
                }
                break;

            case "Focus counter?":
                if (!uaeA.countAll.HasValue && !uaeB.countAll.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.countAll.HasValue && uaeB.countAll.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.countAll.HasValue && !uaeB.countAll.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.countAll.Value.CompareTo(uaeB.countAll.Value);
                }
                break;

            case "Focus time?":
                if (!uaeA.totalRunningTime.HasValue && !uaeB.totalRunningTime.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.totalRunningTime.HasValue && uaeB.totalRunningTime.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.totalRunningTime.HasValue && !uaeB.totalRunningTime.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.totalRunningTime.Value.CompareTo(uaeB.totalRunningTime.Value);
                }
                break;

            case "Flags?":
                if (!uaeA.flags.HasValue && !uaeB.flags.HasValue)
                {
                    result = 0;
                }
                else if (!uaeA.flags.HasValue && uaeB.flags.HasValue)
                {
                    result = -1;
                }
                else if (uaeA.flags.HasValue && !uaeB.flags.HasValue)
                {
                    result = 1;
                }
                else
                {
                    result = uaeA.flags.Value.CompareTo(uaeB.flags.Value);
                }
                break;

            default:
                result = int.Parse(lviA.SubItems[CurrentColumn].Text).CompareTo(int.Parse(lviB.SubItems[CurrentColumn].Text));
                break;
            }
            return(result * (order == SortOrder.Ascending ? 1 : -1));
        }