From e708b908533282ce89c688123135bad2e101bbdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=93=9D=E7=82=B9lilac?= Date: Thu, 25 Feb 2021 20:33:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E6=B7=BB=E5=8A=A0UWP=E6=96=B0=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E9=A1=B9=E7=9B=AE=E6=A8=A1=E5=9D=97=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ContextMenuManager/AppConfig.cs | 9 +- ContextMenuManager/AppDic.cs | 37 +++++ ContextMenuManager/AppImage.cs | 2 - ContextMenuManager/AppString.cs | 7 +- .../BluePointLilac.Methods/ExternalProgram.cs | 38 +++-- ContextMenuManager/ContextMenuManager.csproj | 11 +- ContextMenuManager/Controls/AboutApp.cs | 12 +- .../Controls/AddGuidDicDialog.cs | 8 +- .../Controls/EnhanceMenusList.cs | 32 +--- .../Controls/GuidBlockedItem.cs | 46 ++++-- .../Controls/GuidBlockedList.cs | 19 +-- .../Controls/Interfaces/ITsiGuidItem.cs | 148 ++++++++++++++++++ .../Controls/Interfaces/ITsiRegExportItem.cs | 2 +- ContextMenuManager/Controls/RuleItem.cs | 16 -- ContextMenuManager/Controls/ShellExItem.cs | 129 +-------------- ContextMenuManager/Controls/ShellList.cs | 52 ++++-- .../Controls/ShellStoreDialog.cs | 2 + ContextMenuManager/Controls/ThirdRulesList.cs | 32 +--- ContextMenuManager/Controls/UwpModeItem.cs | 136 ++++++++++++++++ ContextMenuManager/GuidInfo.cs | 72 +++++---- .../Properties/Resources.Designer.cs | 25 +-- ContextMenuManager/Properties/Resources.resx | 6 +- .../Properties/Resources/Images/Skype.png | Bin 1650 -> 0 bytes .../Resources/Texts/AppLanguageDic.ini | 5 +- .../Resources/Texts/GuidInfosDic.ini | 14 +- .../Resources/Texts/UwpModeItemsDic.xml | 18 +++ ContextMenuManager/Updater.cs | 2 + Screenshot.png | Bin 59592 -> 60382 bytes languages/zh-CN.ini | 5 +- 29 files changed, 563 insertions(+), 322 deletions(-) create mode 100644 ContextMenuManager/AppDic.cs create mode 100644 ContextMenuManager/Controls/Interfaces/ITsiGuidItem.cs create mode 100644 ContextMenuManager/Controls/UwpModeItem.cs delete mode 100644 ContextMenuManager/Properties/Resources/Images/Skype.png create mode 100644 ContextMenuManager/Properties/Resources/Texts/UwpModeItemsDic.xml diff --git a/ContextMenuManager/AppConfig.cs b/ContextMenuManager/AppConfig.cs index 5f455fb..618001e 100644 --- a/ContextMenuManager/AppConfig.cs +++ b/ContextMenuManager/AppConfig.cs @@ -33,15 +33,18 @@ namespace ContextMenuManager public static string UserDicsDir = $@"{DicsDir}\User"; public static string WebGuidInfosDic = $@"{WebDicsDir}\{GUIDINFOSDICINI}"; public static string UserGuidInfosDic = $@"{UserDicsDir}\{GUIDINFOSDICINI}"; - public static string WebThirdRulesDic = $@"{WebDicsDir}\{ThIRDRULESDICXML}"; - public static string UserThirdRulesDic = $@"{UserDicsDir}\{ThIRDRULESDICXML}"; + public static string WebThirdRulesDic = $@"{WebDicsDir}\{THIRDRULESDICXML}"; + public static string UserThirdRulesDic = $@"{UserDicsDir}\{THIRDRULESDICXML}"; public static string WebEnhanceMenusDic = $@"{WebDicsDir}\{ENHANCEMENUSICXML}"; public static string UserEnhanceMenusDic = $@"{UserDicsDir}\{ENHANCEMENUSICXML}"; + public static string WebUwpModeItemsDic = $@"{UserDicsDir}\{UWPMODEITEMSDICXML}"; + public static string UserUwpModeItemsDic = $@"{UserDicsDir}\{UWPMODEITEMSDICXML}"; public static string HashLnkExePath = $@"{ProgramsDir}\HashLnk.exe"; public const string ZH_CNINI = "zh-CN.ini"; public const string GUIDINFOSDICINI = "GuidInfosDic.ini"; - public const string ThIRDRULESDICXML = "ThirdRulesDic.xml"; + public const string THIRDRULESDICXML = "ThirdRulesDic.xml"; public const string ENHANCEMENUSICXML = "EnhanceMenusDic.xml"; + public const string UWPMODEITEMSDICXML = "UwpModeItemsDic.xml"; public static readonly string[] EngineUrls = { diff --git a/ContextMenuManager/AppDic.cs b/ContextMenuManager/AppDic.cs new file mode 100644 index 0000000..bceb575 --- /dev/null +++ b/ContextMenuManager/AppDic.cs @@ -0,0 +1,37 @@ +using BluePointLilac.Methods; +using System.IO; +using System.Xml; + +namespace ContextMenuManager +{ + static class AppDic + { + public static XmlDocument ReadXml(string webDicPath, string userDicPath, string appDic) + { + XmlDocument doc1 = new XmlDocument(); + try + { + if(File.Exists(webDicPath)) + { + doc1.LoadXml(File.ReadAllText(webDicPath, EncodingType.GetType(webDicPath))); + } + else + { + doc1.LoadXml(appDic); + } + if(File.Exists(userDicPath)) + { + XmlDocument doc2 = new XmlDocument(); + doc2.LoadXml(File.ReadAllText(userDicPath, EncodingType.GetType(userDicPath))); + foreach(XmlNode xn in doc2.DocumentElement.ChildNodes) + { + XmlNode node = doc1.ImportNode(xn, true); + doc1.DocumentElement.AppendChild(node); + } + } + } + catch { } + return doc1; + } + } +} \ No newline at end of file diff --git a/ContextMenuManager/AppImage.cs b/ContextMenuManager/AppImage.cs index 02a5175..f00151f 100644 --- a/ContextMenuManager/AppImage.cs +++ b/ContextMenuManager/AppImage.cs @@ -49,8 +49,6 @@ namespace ContextMenuManager public static readonly Image Select = Resources.Select.ResizeImage(Scale); ///Microsoft Store图标 public static readonly Image MicrosoftStore = Resources.MicrosoftStore.ResizeImage(Scale); - ///Skype图标 - public static readonly Image Skype = Resources.Skype.ResizeImage(Scale); ///dll文件默认图标 public static readonly Image DllDefaultIcon = ResourceIcon.GetExtensionIcon(".dll").ToBitmap(); ///资源不存在图标 diff --git a/ContextMenuManager/AppString.cs b/ContextMenuManager/AppString.cs index f36d409..d28452c 100644 --- a/ContextMenuManager/AppString.cs +++ b/ContextMenuManager/AppString.cs @@ -166,7 +166,6 @@ namespace ContextMenuManager public static string RemovableDrive => GetValue("RemovableDrive"); public static string BuildSendtoMenu => GetValue("BuildSendtoMenu"); public static string UseStoreOpenWith => GetValue("UseStoreOpenWith"); - public static string ShareWithSkype => GetValue("ShareWithSkype"); public static string NewItem => GetValue("NewItem"); public static string AddGuidBlockedItem => GetValue("AddGuidBlockedItem"); public static string SelectExtension => GetValue("SelectExtension"); @@ -200,7 +199,6 @@ namespace ContextMenuManager public static string MultiMenu => GetValue("MultiMenu"); public static string Public => GetValue("Public"); public static string Private => GetValue("Private"); - public static string Administrator => GetValue("Administrator"); public static string InputGuid => GetValue("InputGuid"); public static string AddGuidDic => GetValue("AddGuidDic"); public static string DeleteGuidDic => GetValue("DeleteGuidDic"); @@ -218,6 +216,7 @@ namespace ContextMenuManager public static string CheckReference => GetValue("CheckReference"); public static string CheckCopy => GetValue("CheckCopy"); public static string SelectSubMenuMode => GetValue("SelectSubMenuMode"); + public static string SelectNewItemType => GetValue("SelectNewItemType"); public static string RegistryFile => GetValue("RegistryFile"); public static string SelectGroup => GetValue("SelectGroup"); } @@ -263,13 +262,9 @@ namespace ContextMenuManager private static string GetValue(string key) => GetStringValue("Other", key); public static string RestartExplorer => GetValue("RestartExplorer"); public static string DictionaryDescription => GetValue("DictionaryDescription"); - public static string LanguageDictionary => GetValue("LanguageDictionary"); public static string GuidInfosDictionary => GetValue("GuidInfosDictionary"); - public static string ThridRulesDictionary => GetValue("ThridRulesDictionary"); - public static string CommonItemsDictionary => GetValue("CommonItemsDictionary"); public static string Translators => GetValue("Translators"); public static string OtherLanguages => GetValue("OtherLanguages"); - public static string SelectSubMenuMode => GetValue("SelectSubMenuMode"); public static string AboutApp => GetValue("AboutApp"); public static string Dictionaries => GetValue("Dictionaries"); public static string Donate => GetValue("Donate"); diff --git a/ContextMenuManager/BluePointLilac.Methods/ExternalProgram.cs b/ContextMenuManager/BluePointLilac.Methods/ExternalProgram.cs index b64144d..b4d1adc 100644 --- a/ContextMenuManager/BluePointLilac.Methods/ExternalProgram.cs +++ b/ContextMenuManager/BluePointLilac.Methods/ExternalProgram.cs @@ -12,29 +12,39 @@ namespace BluePointLilac.Methods { public static void JumpRegEdit(string regPath, string valueName = null, bool moreOpen = false) { + Process process; IntPtr hMain = FindWindow("RegEdit_RegEdit", null); - if(moreOpen || hMain == IntPtr.Zero) + if(hMain != IntPtr.Zero && !moreOpen) { - using(Process process = Process.Start("regedit.exe", "-m")) - { - process.WaitForInputIdle(); - hMain = process.MainWindowHandle; - } + GetWindowThreadProcessId(hMain, out int id); + process = Process.GetProcessById(id); + + } + else + { + process = Process.Start("regedit.exe", "-m"); + process.WaitForInputIdle(); + hMain = process.MainWindowHandle; } + ShowWindowAsync(hMain, SW_SHOWNORMAL); + SetForegroundWindow(hMain); IntPtr hTree = FindWindowEx(hMain, IntPtr.Zero, "SysTreeView32", null); IntPtr hList = FindWindowEx(hMain, IntPtr.Zero, "SysListView32", null); SetForegroundWindow(hTree); SetFocus(hTree); + process.WaitForInputIdle(); SendMessage(hTree, WM_KEYDOWN, VK_HOME, null); - Thread.Sleep(50); + Thread.Sleep(100); + process.WaitForInputIdle(); SendMessage(hTree, WM_KEYDOWN, VK_RIGHT, null); foreach(char chr in Encoding.Default.GetBytes(regPath)) { + process.WaitForInputIdle(); if(chr == '\\') { - Thread.Sleep(50); + Thread.Sleep(100); SendMessage(hTree, WM_KEYDOWN, VK_RIGHT, null); } else @@ -48,14 +58,17 @@ namespace BluePointLilac.Methods { if(key?.GetValue(valueName) == null) return; } - Thread.Sleep(50); + Thread.Sleep(100); SetForegroundWindow(hList); SetFocus(hList); + process.WaitForInputIdle(); SendMessage(hList, WM_KEYDOWN, VK_HOME, null); foreach(char chr in Encoding.Default.GetBytes(valueName)) { + process.WaitForInputIdle(); SendMessage(hList, WM_CHAR, Convert.ToInt16(chr), null); } + process.Dispose(); } public static void JumpExplorer(string filePath) @@ -130,6 +143,7 @@ namespace BluePointLilac.Methods } } + private const int SW_SHOWNORMAL = 1; private const int SW_SHOW = 5; private const uint SEE_MASK_INVOKEIDLIST = 12; private const int WM_SETTEXT = 0xC; @@ -138,12 +152,18 @@ namespace BluePointLilac.Methods private const int VK_HOME = 0x24; private const int VK_RIGHT = 0x27; + [DllImport("User32.dll")] + private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); + [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32.dll")] private static extern bool SetFocus(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID); + [DllImport("user32.dll")] private static extern IntPtr FindWindow(string lpszClass, string lpszWindow); diff --git a/ContextMenuManager/ContextMenuManager.csproj b/ContextMenuManager/ContextMenuManager.csproj index 2ca3501..9d0a775 100644 --- a/ContextMenuManager/ContextMenuManager.csproj +++ b/ContextMenuManager/ContextMenuManager.csproj @@ -33,7 +33,7 @@ AnyCPU true full - true + false bin\Debug\ DEBUG;TRACE prompt @@ -110,6 +110,7 @@ + Component @@ -155,6 +156,9 @@ Component + + Component + Component @@ -263,6 +267,9 @@ Component + + Component + Component @@ -331,6 +338,7 @@ + SettingsSingleFileGenerator Settings.Designer.cs @@ -361,7 +369,6 @@ - diff --git a/ContextMenuManager/Controls/AboutApp.cs b/ContextMenuManager/Controls/AboutApp.cs index fd8461d..5e663be 100644 --- a/ContextMenuManager/Controls/AboutApp.cs +++ b/ContextMenuManager/Controls/AboutApp.cs @@ -77,10 +77,10 @@ namespace ContextMenuManager.Controls readonly TabPage[] pages = new TabPage[] { new TabPage(AppString.Other.DictionaryDescription), - new TabPage(AppString.Other.LanguageDictionary), + new TabPage(AppString.SideBar.AppLanguage), new TabPage(AppString.Other.GuidInfosDictionary), - new TabPage(AppString.Other.ThridRulesDictionary), - new TabPage(AppString.Other.CommonItemsDictionary) + new TabPage(AppString.SideBar.ThirdRules), + new TabPage(AppString.SideBar.EnhanceMenu) }; readonly ReadOnlyRichTextBox[] boxs = new ReadOnlyRichTextBox[5]; readonly PictureButton btnOpenDir = new PictureButton(AppImage.Open) @@ -110,7 +110,7 @@ namespace ContextMenuManager.Controls dlg.FileName = AppConfig.GUIDINFOSDICINI; break; case 3: - dlg.FileName = AppConfig.ThIRDRULESDICXML; + dlg.FileName = AppConfig.THIRDRULESDICXML; break; case 4: dlg.FileName = AppConfig.ENHANCEMENUSICXML; @@ -437,8 +437,8 @@ namespace ContextMenuManager.Controls public void LoadItems() { - this.AddItems(new[] { mliUpdate, mliConfigDir, mliBackup, mliProtect, - mliEngine, mliWinXSortable, mliShowFilePath, mliOpenMoreRegedit }); + this.AddItems(new[] { mliUpdate, mliConfigDir, mliEngine, mliBackup, + mliProtect, mliWinXSortable, mliShowFilePath, mliOpenMoreRegedit }); cmbConfigDir.SelectedIndex = AppConfig.SaveToAppDir ? 1 : 0; chkBackup.Checked = AppConfig.AutoBackup; chkProtect.Checked = AppConfig.ProtectOpenItem; diff --git a/ContextMenuManager/Controls/AddGuidDicDialog.cs b/ContextMenuManager/Controls/AddGuidDicDialog.cs index 001f6eb..45d412b 100644 --- a/ContextMenuManager/Controls/AddGuidDicDialog.cs +++ b/ContextMenuManager/Controls/AddGuidDicDialog.cs @@ -9,7 +9,7 @@ namespace ContextMenuManager.Controls sealed class AddGuidDicDialog : CommonDialog { public Image ItemIcon { get; set; } - public string ItemName { get; set; } + public string ItemText { get; set; } public bool IsDelete { get; private set; } public string ItemIconPath { get; set; } public int ItemIconIndex { get; set; } @@ -28,14 +28,14 @@ namespace ContextMenuManager.Controls { using(AddGuidDicForm frm = new AddGuidDicForm()) { - frm.ItemName = this.ItemName; + frm.ItemText = this.ItemText; frm.ItemIcon = this.ItemIcon; frm.ItemIconPath = this.ItemIconPath; frm.ItemIconIndex = this.ItemIconIndex; bool flag = frm.ShowDialog() == DialogResult.OK; if(flag) { - this.ItemName = frm.ItemName; + this.ItemText = frm.ItemText; this.ItemIcon = frm.ItemIcon; this.ItemIconPath = frm.ItemIconPath; this.ItemIconIndex = frm.ItemIconIndex; @@ -60,7 +60,7 @@ namespace ContextMenuManager.Controls InitializeComponents(); } - public string ItemName + public string ItemText { get => txtName.Text; set => txtName.Text = value; diff --git a/ContextMenuManager/Controls/EnhanceMenusList.cs b/ContextMenuManager/Controls/EnhanceMenusList.cs index 6b68d2d..995ff6b 100644 --- a/ContextMenuManager/Controls/EnhanceMenusList.cs +++ b/ContextMenuManager/Controls/EnhanceMenusList.cs @@ -14,7 +14,9 @@ namespace ContextMenuManager.Controls { try { - foreach(XmlNode xn in ReadXml().DocumentElement.ChildNodes) + XmlDocument doc = AppDic.ReadXml(AppConfig.WebEnhanceMenusDic, + AppConfig.UserEnhanceMenusDic, Properties.Resources.EnhanceMenusDic); + foreach(XmlNode xn in doc.DocumentElement.ChildNodes) { GroupPathItem groupItem = GetGroupPathItem(xn); @@ -97,34 +99,6 @@ namespace ContextMenuManager.Controls return groupItem; } - private XmlDocument ReadXml() - { - XmlDocument doc1 = new XmlDocument(); - try - { - if(File.Exists(AppConfig.WebEnhanceMenusDic)) - { - doc1.LoadXml(File.ReadAllText(AppConfig.WebEnhanceMenusDic, EncodingType.GetType(AppConfig.WebEnhanceMenusDic))); - } - else - { - doc1.LoadXml(Properties.Resources.EnhanceMenusDic); - } - if(File.Exists(AppConfig.UserEnhanceMenusDic)) - { - XmlDocument doc2 = new XmlDocument(); - doc2.LoadXml(File.ReadAllText(AppConfig.UserEnhanceMenusDic, EncodingType.GetType(AppConfig.UserEnhanceMenusDic))); - foreach(XmlNode xn in doc2.DocumentElement.ChildNodes) - { - XmlNode node = doc1.ImportNode(xn, true); - doc1.DocumentElement.AppendChild(node); - } - } - } - catch { } - return doc1; - } - private void LoadShellItems(XmlElement shellXE, GroupPathItem groupItem) { foreach(XmlElement itemXE in shellXE.SelectNodes("Item")) diff --git a/ContextMenuManager/Controls/GuidBlockedItem.cs b/ContextMenuManager/Controls/GuidBlockedItem.cs index 66e06e5..a50c3c3 100644 --- a/ContextMenuManager/Controls/GuidBlockedItem.cs +++ b/ContextMenuManager/Controls/GuidBlockedItem.cs @@ -6,12 +6,8 @@ using System.Windows.Forms; namespace ContextMenuManager.Controls { - class GuidBlockedItem : MyListItem, IBtnDeleteItem, ITsiWebSearchItem, ITsiFilePathItem + class GuidBlockedItem : MyListItem, IBtnDeleteItem, ITsiWebSearchItem, ITsiFilePathItem, ITsiGuidItem { - public const string HKLMBLOCKED = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"; - public const string HKCUBLOCKED = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"; - public static readonly string[] BlockedPaths = { HKLMBLOCKED, HKCUBLOCKED }; - public GuidBlockedItem(string value) { InitializeComponents(); @@ -19,32 +15,49 @@ namespace ContextMenuManager.Controls if(GuidEx.TryParse(value, out Guid guid)) { this.Guid = guid; - this.Text = GuidInfo.GetText(guid); this.Image = GuidInfo.GetImage(guid); this.ItemFilePath = GuidInfo.GetFilePath(Guid); } else { this.Guid = Guid.Empty; - this.Text = AppString.MessageBox.MalformedGuid; this.Image = AppImage.DllDefaultIcon; } - this.Text += "\n" + value; + this.Text = this.ItemText; } public string Value { get; set; } public Guid Guid { get; set; } - public DeleteButton BtnDelete { get; set; } - public ObjectPathButton BtnOpenPath { get; set; } + public string ItemText + { + get + { + string text; + if(GuidEx.TryParse(Value, out Guid guid)) + { + text = GuidInfo.GetText(guid); + } + else + { + text = AppString.MessageBox.MalformedGuid; + } + text += "\n" + Value; + return text; + } + } + public string SearchText => Value; public string ItemFilePath { get; set; } - + public DeleteButton BtnDelete { get; set; } + public ObjectPathButton BtnOpenPath { get; set; } public WebSearchMenuItem TsiSearch { get; set; } public FileLocationMenuItem TsiFileLocation { get; set; } public FilePropertiesMenuItem TsiFileProperties { get; set; } - public string RegPath { get; set; } + public HandleGuidMenuItem TsiHandleGuid { get; set; } + + readonly ToolStripMenuItem TsiDetails = new ToolStripMenuItem(AppString.Menu.Details); private void InitializeComponents() { @@ -53,16 +66,19 @@ namespace ContextMenuManager.Controls TsiSearch = new WebSearchMenuItem(this); TsiFileProperties = new FilePropertiesMenuItem(this); TsiFileLocation = new FileLocationMenuItem(this); + TsiHandleGuid = new HandleGuidMenuItem(this, false); - ContextMenuStrip.Items.AddRange(new ToolStripItem[] {TsiSearch, - new ToolStripSeparator(), TsiFileProperties, TsiFileLocation }); + ContextMenuStrip.Items.AddRange(new ToolStripItem[] {TsiHandleGuid, + new ToolStripSeparator(), TsiDetails }); + TsiDetails.DropDownItems.AddRange(new ToolStripItem[] { TsiSearch, + new ToolStripSeparator(), TsiFileProperties, TsiFileLocation}); MyToolTip.SetToolTip(BtnDelete, AppString.Menu.Delete); } public void DeleteMe() { - Array.ForEach(BlockedPaths, path => { RegistryEx.DeleteValue(path, this.Value); }); + Array.ForEach(GuidBlockedList.BlockedPaths, path => RegistryEx.DeleteValue(path, this.Value)); if(!this.Guid.Equals(Guid.Empty)) ExplorerRestarter.Show(); this.Dispose(); } diff --git a/ContextMenuManager/Controls/GuidBlockedList.cs b/ContextMenuManager/Controls/GuidBlockedList.cs index a1f4044..4c55e20 100644 --- a/ContextMenuManager/Controls/GuidBlockedList.cs +++ b/ContextMenuManager/Controls/GuidBlockedList.cs @@ -10,6 +10,10 @@ namespace ContextMenuManager.Controls { sealed class GuidBlockedList : MyList { + public const string HKLMBLOCKED = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"; + public const string HKCUBLOCKED = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"; + public static readonly string[] BlockedPaths = { HKLMBLOCKED, HKCUBLOCKED }; + public void LoadItems() { this.AddNewItem(); @@ -19,15 +23,14 @@ namespace ContextMenuManager.Controls private void LoadBlockedItems() { List values = new List(); - Array.ForEach(GuidBlockedItem.BlockedPaths, path => + Array.ForEach(BlockedPaths, path => { using(RegistryKey key = RegistryEx.GetRegistryKey(path)) if(key != null) values.AddRange(key.GetValueNames()); }); Array.ForEach(values.Distinct(StringComparer.OrdinalIgnoreCase).ToArray(), value => - { - this.AddItem(new GuidBlockedItem(value)); - }); + this.AddItem(new GuidBlockedItem(value)) + ); } private void AddNewItem() @@ -42,10 +45,8 @@ namespace ContextMenuManager.Controls if(dlg.ShowDialog() != DialogResult.OK) return; if(GuidEx.TryParse(dlg.Text, out guid)) { - Array.ForEach(GuidBlockedItem.BlockedPaths, path => - { - Registry.SetValue(path, guid.ToString("B"), string.Empty); - }); + string value = guid.ToString("B"); + Array.ForEach(BlockedPaths, path => Registry.SetValue(path, value, "")); for(int i = 1; i < Controls.Count; i++) { if(((GuidBlockedItem)Controls[i]).Guid.Equals(guid)) @@ -54,7 +55,7 @@ namespace ContextMenuManager.Controls return; } } - this.InsertItem(new GuidBlockedItem(dlg.Text), 1); + this.InsertItem(new GuidBlockedItem(value), 1); ExplorerRestarter.Show(); } else MessageBoxEx.Show(AppString.MessageBox.MalformedGuid); diff --git a/ContextMenuManager/Controls/Interfaces/ITsiGuidItem.cs b/ContextMenuManager/Controls/Interfaces/ITsiGuidItem.cs new file mode 100644 index 0000000..b72b5ad --- /dev/null +++ b/ContextMenuManager/Controls/Interfaces/ITsiGuidItem.cs @@ -0,0 +1,148 @@ +using BluePointLilac.Controls; +using BluePointLilac.Methods; +using Microsoft.Win32; +using System; +using System.Windows.Forms; + +namespace ContextMenuManager.Controls.Interfaces +{ + interface ITsiGuidItem + { + Guid Guid { get; } + string ItemText { get; } + HandleGuidMenuItem TsiHandleGuid { get; set; } + } + + sealed class HandleGuidMenuItem : ToolStripMenuItem + { + public HandleGuidMenuItem(ITsiGuidItem item, bool isShellExItem) : base(AppString.Menu.HandleGuid) + { + this.Item = item; + this.DropDownItems.Add(TsiCopyGuid); + if(isShellExItem) + { + this.DropDownItems.Add(new ToolStripSeparator()); + this.DropDownItems.Add(TsiBlockGuid); + } + this.DropDownItems.Add(new ToolStripSeparator()); + this.DropDownItems.Add(TsiAddGuidDic); + TsiCopyGuid.Click += (sender, e) => CopyGuid(); + TsiBlockGuid.Click += (sender, e) => BlockGuid(); + TsiAddGuidDic.Click += (sender, e) => AddGuidDic(); + ((Control)item).ContextMenuStrip.Opening += (sender, e) => + { + TsiBlockGuid.Checked = false; + foreach(string path in GuidBlockedList.BlockedPaths) + { + if(Registry.GetValue(path, Item.Guid.ToString("B"), null) != null) + { + TsiBlockGuid.Checked = true; + break; + } + } + }; + } + + readonly ToolStripMenuItem TsiCopyGuid = new ToolStripMenuItem(AppString.Menu.CopyGuid); + readonly ToolStripMenuItem TsiBlockGuid = new ToolStripMenuItem(AppString.Menu.BlockGuid); + readonly ToolStripMenuItem TsiAddGuidDic = new ToolStripMenuItem(AppString.Menu.AddGuidDic); + + public ITsiGuidItem Item { get; set; } + + private void CopyGuid() + { + Clipboard.SetText(Item.Guid.ToString()); + MessageBoxEx.Show($"{AppString.MessageBox.CopiedToClipboard}\n{Item.Guid}", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + private void BlockGuid() + { + foreach(string path in GuidBlockedList.BlockedPaths) + { + if(TsiBlockGuid.Checked) + { + RegistryEx.DeleteValue(path, Item.Guid.ToString("B")); + } + else + { + Registry.SetValue(path, Item.Guid.ToString("B"), string.Empty); + } + } + ExplorerRestarter.Show(); + } + + private void AddGuidDic() + { + using(AddGuidDicDialog dlg = new AddGuidDicDialog()) + { + dlg.ItemText = GuidInfo.GetText(Item.Guid); + dlg.ItemIcon = GuidInfo.GetImage(Item.Guid); + var location = GuidInfo.GetIconLocation(Item.Guid); + dlg.ItemIconPath = location.IconPath; + dlg.ItemIconIndex = location.IconIndex; + IniWriter writer = new IniWriter + { + FilePath = AppConfig.UserGuidInfosDic, + DeleteFileWhenEmpty = true + }; + string section = Item.Guid.ToString(); + if(dlg.ShowDialog() != DialogResult.OK) + { + if(dlg.IsDelete) + { + writer.DeleteSection(section); + GuidInfo.ItemTextDic.Remove(Item.Guid); + GuidInfo.ItemImageDic.Remove(Item.Guid); + GuidInfo.IconLocationDic.Remove(Item.Guid); + GuidInfo.UserDic.RootDic.Remove(section); + ((MyListItem)Item).Text = Item.ItemText; + ((MyListItem)Item).Image = GuidInfo.GetImage(Item.Guid); + } + return; + } + string name = ResourceString.GetDirectString(dlg.ItemText); + if(!name.IsNullOrWhiteSpace()) + { + writer.SetValue(section, "Text", dlg.ItemText); + ((MyListItem)Item).Text = name; + if(GuidInfo.ItemTextDic.ContainsKey(Item.Guid)) + { + GuidInfo.ItemTextDic[Item.Guid] = name; + } + else + { + GuidInfo.ItemTextDic.Add(Item.Guid, name); + } + } + else + { + MessageBoxEx.Show(AppString.MessageBox.StringParsingFailed); + return; + } + if(dlg.ItemIconLocation != null) + { + writer.SetValue(section, "Icon", dlg.ItemIconLocation); + location = new GuidInfo.IconLocation { IconPath = dlg.ItemIconPath, IconIndex = dlg.ItemIconIndex }; + if(GuidInfo.IconLocationDic.ContainsKey(Item.Guid)) + { + GuidInfo.IconLocationDic[Item.Guid] = location; + } + else + { + GuidInfo.IconLocationDic.Add(Item.Guid, location); + } + ((MyListItem)Item).Image = dlg.ItemIcon; + if(GuidInfo.ItemImageDic.ContainsKey(Item.Guid)) + { + GuidInfo.ItemImageDic[Item.Guid] = dlg.ItemIcon; + } + else + { + GuidInfo.ItemImageDic.Add(Item.Guid, dlg.ItemIcon); + } + } + } + } + } +} \ No newline at end of file diff --git a/ContextMenuManager/Controls/Interfaces/ITsiRegExportItem.cs b/ContextMenuManager/Controls/Interfaces/ITsiRegExportItem.cs index d8961bc..75871f5 100644 --- a/ContextMenuManager/Controls/Interfaces/ITsiRegExportItem.cs +++ b/ContextMenuManager/Controls/Interfaces/ITsiRegExportItem.cs @@ -8,7 +8,7 @@ namespace ContextMenuManager.Controls.Interfaces interface ITsiRegExportItem { string Text { get; set; } - string RegPath { get; set; } + string RegPath { get; } ContextMenuStrip ContextMenuStrip { get; set; } RegExportMenuItem TsiRegExport { get; set; } } diff --git a/ContextMenuManager/Controls/RuleItem.cs b/ContextMenuManager/Controls/RuleItem.cs index e3eaa45..f7f2871 100644 --- a/ContextMenuManager/Controls/RuleItem.cs +++ b/ContextMenuManager/Controls/RuleItem.cs @@ -149,7 +149,6 @@ namespace ContextMenuManager.Controls const string CU_SMWCE = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer"; const string LM_SPMWE = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer"; const string CU_SPMWE = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer"; - public const string SkypeGuid = "{776dbc8d-7347-478c-8d71-791e12ef49d8}"; public static RuleAndInfo CustomFolder = new RuleAndInfo { @@ -237,21 +236,6 @@ namespace ContextMenuManager.Controls Image = AppImage.MicrosoftStore } }; - - public static RuleAndInfo ShareWithSkype = new RuleAndInfo - { - Rules = new[] - { - new RegRule(GuidBlockedItem.HKLMBLOCKED, SkypeGuid, null, "", RegistryValueKind.String), - new RegRule(GuidBlockedItem.HKCUBLOCKED, SkypeGuid, null, "", RegistryValueKind.String) - }, - ItemInfo = new ItemInfo - { - Text = AppString.Item.ShareWithSkype, - Image = AppImage.Skype, - RestartExplorer = true - } - }; } sealed class NumberRegRuleItem : RuleItem, ITsiRegPathItem diff --git a/ContextMenuManager/Controls/ShellExItem.cs b/ContextMenuManager/Controls/ShellExItem.cs index c25d034..4eac674 100644 --- a/ContextMenuManager/Controls/ShellExItem.cs +++ b/ContextMenuManager/Controls/ShellExItem.cs @@ -8,7 +8,7 @@ using System.Windows.Forms; namespace ContextMenuManager.Controls { - sealed class ShellExItem : MyListItem, IChkVisibleItem, IBtnShowMenuItem, IFoldSubItem, + sealed class ShellExItem : MyListItem, IChkVisibleItem, IBtnShowMenuItem, IFoldSubItem, ITsiGuidItem, ITsiWebSearchItem, ITsiFilePathItem, ITsiRegPathItem, ITsiRegDeleteItem, ITsiRegExportItem { public static Dictionary GetPathAndGuids(string shellExPath, bool isDragDrop = false) @@ -68,8 +68,8 @@ namespace ContextMenuManager.Controls private string ShellExPath => RegistryEx.GetParentPath(ParentPath); private string ParentKeyName => RegistryEx.GetKeyName(ParentPath); private string DefaultValue => Registry.GetValue(RegPath, "", null)?.ToString(); - public string ItemText => GuidInfo.GetText(Guid) ?? ((Guid.ToString("B") == KeyName) ? DefaultValue : KeyName); - private GuidInfo.IconLocation IconLocation => GuidInfo.GetIconLocation(this.Guid); + public string ItemText => GuidInfo.GetText(Guid) ?? (KeyName.Equals(Guid.ToString("B"), StringComparison.OrdinalIgnoreCase) ? DefaultValue : KeyName); + private GuidInfo.IconLocation IconLocation => GuidInfo.GetIconLocation(Guid); private bool IsOpenLnkItem => Guid.ToString() == LnkOpenGuid; public bool IsDragDropItem => ParentKeyName.EndsWith(DdhParts[0], StringComparison.OrdinalIgnoreCase); @@ -114,12 +114,9 @@ namespace ContextMenuManager.Controls public DeleteMeMenuItem TsiDeleteMe { get; set; } public RegExportMenuItem TsiRegExport { get; set; } public IFoldGroupItem FoldGroupItem { get; set; } + public HandleGuidMenuItem TsiHandleGuid { get; set; } readonly ToolStripMenuItem TsiDetails = new ToolStripMenuItem(AppString.Menu.Details); - readonly ToolStripMenuItem TsiHandleGuid = new ToolStripMenuItem(AppString.Menu.HandleGuid); - readonly ToolStripMenuItem TsiCopyGuid = new ToolStripMenuItem(AppString.Menu.CopyGuid); - readonly ToolStripMenuItem TsiBlockGuid = new ToolStripMenuItem(AppString.Menu.BlockGuid); - readonly ToolStripMenuItem TsiAddGuidDic = new ToolStripMenuItem(AppString.Menu.AddGuidDic); private void InitializeComponents() { @@ -131,129 +128,15 @@ namespace ContextMenuManager.Controls TsiRegLocation = new RegLocationMenuItem(this); TsiRegExport = new RegExportMenuItem(this); TsiDeleteMe = new DeleteMeMenuItem(this); + TsiHandleGuid = new HandleGuidMenuItem(this, true); ContextMenuStrip.Items.AddRange(new ToolStripItem[] { TsiHandleGuid, new ToolStripSeparator(), TsiDetails, new ToolStripSeparator(), TsiDeleteMe }); - TsiHandleGuid.DropDownItems.AddRange(new ToolStripItem[] { TsiCopyGuid, new ToolStripSeparator(), - TsiBlockGuid, new ToolStripSeparator(), TsiAddGuidDic }); - TsiDetails.DropDownItems.AddRange(new ToolStripItem[] { TsiSearch, new ToolStripSeparator(), TsiFileProperties, TsiFileLocation, TsiRegLocation, TsiRegExport}); - ContextMenuStrip.Opening += (sender, e) => RefreshMenuItem(); - TsiCopyGuid.Click += (sender, e) => CopyGuid(); - TsiBlockGuid.Click += (sender, e) => BlockGuid(); - TsiAddGuidDic.Click += (sender, e) => AddGuidDic(); - } - - private void CopyGuid() - { - Clipboard.SetText(Guid.ToString()); - MessageBoxEx.Show($"{AppString.MessageBox.CopiedToClipboard}\n{Guid}", - MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - private void BlockGuid() - { - foreach(string path in GuidBlockedItem.BlockedPaths) - { - if(TsiBlockGuid.Checked) - { - RegistryEx.DeleteValue(path, this.Guid.ToString("B")); - } - else - { - Registry.SetValue(path, this.Guid.ToString("B"), string.Empty); - } - } - ExplorerRestarter.Show(); - } - - private void AddGuidDic() - { - using(AddGuidDicDialog dlg = new AddGuidDicDialog()) - { - dlg.ItemName = this.Text; - dlg.ItemIcon = this.Image; - dlg.ItemIconPath = this.IconLocation.IconPath; - dlg.ItemIconIndex = this.IconLocation.IconIndex; - IniWriter writer = new IniWriter - { - FilePath = AppConfig.UserGuidInfosDic, - DeleteFileWhenEmpty = true - }; - string section = this.Guid.ToString(); - if(dlg.ShowDialog() != DialogResult.OK) - { - if(dlg.IsDelete) - { - writer.DeleteSection(section); - GuidInfo.ItemTextDic.Remove(this.Guid); - GuidInfo.ItemImageDic.Remove(this.Guid); - GuidInfo.IconLocationDic.Remove(this.Guid); - GuidInfo.UserDic.RootDic.Remove(section); - this.Text = this.ItemText; - this.Image = GuidInfo.GetImage(Guid); - } - return; - } - string name = ResourceString.GetDirectString(dlg.ItemName); - if(!name.IsNullOrWhiteSpace()) - { - writer.SetValue(section, "Text", dlg.ItemName); - this.Text = name; - if(GuidInfo.ItemTextDic.ContainsKey(this.Guid)) - { - GuidInfo.ItemTextDic[this.Guid] = this.Text; - } - else - { - GuidInfo.ItemTextDic.Add(this.Guid, this.Text); - } - } - else - { - MessageBoxEx.Show(AppString.MessageBox.StringParsingFailed); - return; - } - if(dlg.ItemIconLocation != null) - { - writer.SetValue(section, "Icon", dlg.ItemIconLocation); - var location = new GuidInfo.IconLocation { IconPath = dlg.ItemIconPath, IconIndex = dlg.ItemIconIndex }; - if(GuidInfo.IconLocationDic.ContainsKey(this.Guid)) - { - GuidInfo.IconLocationDic[this.Guid] = location; - } - else - { - GuidInfo.IconLocationDic.Add(this.Guid, location); - } - this.Image = dlg.ItemIcon; - if(GuidInfo.ItemImageDic.ContainsKey(this.Guid)) - { - GuidInfo.ItemImageDic[this.Guid] = this.Image; - } - else - { - GuidInfo.ItemImageDic.Add(this.Guid, this.Image); - } - } - } - } - - private void RefreshMenuItem() - { - TsiDeleteMe.Enabled = !(IsOpenLnkItem && AppConfig.ProtectOpenItem); - TsiBlockGuid.Checked = false; - foreach(string path in GuidBlockedItem.BlockedPaths) - { - if(Registry.GetValue(path, this.Guid.ToString("B"), null) != null) - { - TsiBlockGuid.Checked = true; - break; - } - } + ContextMenuStrip.Opening += (sender, e) => TsiDeleteMe.Enabled = !(IsOpenLnkItem && AppConfig.ProtectOpenItem); } private bool TryProtectOpenItem() diff --git a/ContextMenuManager/Controls/ShellList.cs b/ContextMenuManager/Controls/ShellList.cs index 910f5fc..e96246a 100644 --- a/ContextMenuManager/Controls/ShellList.cs +++ b/ContextMenuManager/Controls/ShellList.cs @@ -5,8 +5,10 @@ using Microsoft.Win32; using System; using System.Collections.Generic; using System.Drawing; +using System.IO; using System.Linq; using System.Windows.Forms; +using System.Xml; namespace ContextMenuManager.Controls { @@ -155,19 +157,9 @@ namespace ContextMenuManager.Controls } this.AddNewItem(scenePath); this.LoadItems(scenePath); + if(WindowsOsVersion.ISAfterOrEqual10) this.AddUwpModeItem(); switch(Scene) { - case Scenes.File: - bool flag = WindowsOsVersion.ISAfterOrEqual10; - if(flag) - { - using(RegistryKey key = RegistryEx.GetRegistryKey(@"HKEY_CLASSES_ROOT\PackagedCom\Package")) - { - flag = key != null && key.GetSubKeyNames().ToList().Any(name => name.StartsWith("Microsoft.SkypeApp", StringComparison.OrdinalIgnoreCase)); - } - } - if(flag) this.AddItem(new VisibleRegRuleItem(VisibleRegRuleItem.ShareWithSkype)); - break; case Scenes.Background: this.AddItem(new VisibleRegRuleItem(VisibleRegRuleItem.CustomFolder)); break; @@ -281,13 +273,14 @@ namespace ContextMenuManager.Controls newItem.AddNewItem += (sender, e) => { bool isShell; - if(Scene == Scenes.DragDrop) isShell = false; + if(Scene == Scenes.CommandStore) isShell = true; + else if(Scene == Scenes.DragDrop) isShell = false; else { using(SelectDialog dlg = new SelectDialog()) { dlg.Items = new[] { "Shell", "ShellEx" }; - dlg.Title = "请选择新建菜单类型"; + dlg.Title = AppString.Dialog.SelectNewItemType; dlg.Selected = dlg.Items[0]; if(dlg.ShowDialog() != DialogResult.OK) return; isShell = dlg.SelectedIndex == 0; @@ -310,7 +303,10 @@ namespace ContextMenuManager.Controls { if(this.Controls[i] is NewItem) { - this.InsertItem(new ShellItem(dlg.NewItemRegPath), i + 1); + ShellItem item; + if(Scene != Scenes.CommandStore) item = new ShellItem(dlg.NewItemRegPath); + else item = new StoreShellItem(dlg.NewItemRegPath, true, false); + this.InsertItem(item, i + 1); break; } } @@ -399,9 +395,33 @@ namespace ContextMenuManager.Controls { Array.ForEach(Array.FindAll(shellKey.GetSubKeyNames(), itemName => !ShellItem.SysStoreItemNames.Contains(itemName, StringComparer.OrdinalIgnoreCase)), itemName => + this.AddItem(new StoreShellItem($@"{ShellItem.CommandStorePath}\{itemName}", true, false))); + } + } + + private void AddUwpModeItem() + { + XmlDocument doc = AppDic.ReadXml(AppConfig.WebUwpModeItemsDic, + AppConfig.UserUwpModeItemsDic, Properties.Resources.UwpModeItemsDic); + List guids = new List(); + foreach(XmlElement sceneXE in doc.DocumentElement.ChildNodes) + { + if(sceneXE.Name == Scene.ToString()) + { + foreach(XmlElement itemXE in sceneXE.ChildNodes) { - this.AddItem(new StoreShellItem($@"{ShellItem.CommandStorePath}\{itemName}", true, false)); - }); + if(GuidEx.TryParse(itemXE.GetAttribute("Guid"), out Guid guid)) + { + if(guids.Contains(guid)) continue; + string uwpName = GuidInfo.GetUwpName(guid); + if(!string.IsNullOrEmpty(uwpName)) + { + this.AddItem(new UwpModeItem(uwpName, guid)); + guids.Add(guid); + } + } + } + } } } diff --git a/ContextMenuManager/Controls/ShellStoreDialog.cs b/ContextMenuManager/Controls/ShellStoreDialog.cs index ced93af..4f1730c 100644 --- a/ContextMenuManager/Controls/ShellStoreDialog.cs +++ b/ContextMenuManager/Controls/ShellStoreDialog.cs @@ -121,6 +121,8 @@ namespace ContextMenuManager.Controls if(isSelect) { this.AddCtr(chkSelected, 40.DpiZoom()); + this.ContextMenuStrip = null; + this.SetNoClickEvent(); ChkVisible.Visible = BtnShowMenu.Visible = BtnSubItems.Visible = false; } RegTrustedInstaller.TakeRegTreeOwnerShip(regPath); diff --git a/ContextMenuManager/Controls/ThirdRulesList.cs b/ContextMenuManager/Controls/ThirdRulesList.cs index aa5a6a5..8fb06b4 100644 --- a/ContextMenuManager/Controls/ThirdRulesList.cs +++ b/ContextMenuManager/Controls/ThirdRulesList.cs @@ -14,7 +14,9 @@ namespace ContextMenuManager.Controls { try { - foreach(XmlElement groupXE in ReadXml().DocumentElement.ChildNodes) + XmlDocument doc = AppDic.ReadXml(AppConfig.WebThirdRulesDic, + AppConfig.UserThirdRulesDic, Properties.Resources.ThirdRulesDic); + foreach(XmlElement groupXE in doc.DocumentElement.ChildNodes) { Guid guid = Guid.Empty; if(groupXE.HasAttribute("Guid")) @@ -164,34 +166,6 @@ namespace ContextMenuManager.Controls catch { } } - private XmlDocument ReadXml() - { - XmlDocument doc1 = new XmlDocument(); - try - { - if(File.Exists(AppConfig.WebThirdRulesDic)) - { - doc1.LoadXml(File.ReadAllText(AppConfig.WebThirdRulesDic, EncodingType.GetType(AppConfig.WebThirdRulesDic))); - } - else - { - doc1.LoadXml(Properties.Resources.ThirdRulesDic); - } - if(File.Exists(AppConfig.UserThirdRulesDic)) - { - XmlDocument doc2 = new XmlDocument(); - doc2.LoadXml(File.ReadAllText(AppConfig.UserThirdRulesDic, EncodingType.GetType(AppConfig.UserThirdRulesDic))); - foreach(XmlNode xn in doc2.DocumentElement.ChildNodes) - { - XmlNode node = doc1.ImportNode(xn, true); - doc1.DocumentElement.AppendChild(node); - } - } - } - catch { } - return doc1; - } - private static RegistryValueKind GetValueKind(string data) { switch(data.ToUpper()) diff --git a/ContextMenuManager/Controls/UwpModeItem.cs b/ContextMenuManager/Controls/UwpModeItem.cs new file mode 100644 index 0000000..f55c9fd --- /dev/null +++ b/ContextMenuManager/Controls/UwpModeItem.cs @@ -0,0 +1,136 @@ +using BluePointLilac.Controls; +using BluePointLilac.Methods; +using ContextMenuManager.Controls.Interfaces; +using Microsoft.Win32; +using System; +using System.IO; +using System.Windows.Forms; + +namespace ContextMenuManager.Controls +{ + sealed class UwpModeItem : MyListItem, IChkVisibleItem, ITsiRegPathItem, ITsiFilePathItem, + IBtnShowMenuItem, ITsiWebSearchItem, ITsiRegExportItem, ITsiRegDeleteItem, ITsiGuidItem + { + private const string PackagePath = @"HKEY_CLASSES_ROOT\PackagedCom\Package"; + private const string AppXPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx"; + private static readonly string WindowAppsDir = Registry.GetValue(AppXPath, "PackageRoot", null)?.ToString(); + + public UwpModeItem(string uwpName, Guid guid) + { + this.Guid = guid; + this.UwpName = uwpName; + this.InitializeComponents(); + ChkVisible.Checked = ItemVisible; + this.Visible = File.Exists(ItemFilePath); + this.Image = GuidInfo.GetImage(guid); + this.Text = this.ItemText; + } + + public Guid Guid { get; set; } + public string UwpName { get; set; } + + public bool ItemVisible + { + get + { + foreach(string path in GuidBlockedList.BlockedPaths) + { + using(RegistryKey key = RegistryEx.GetRegistryKey(path)) + { + if(key == null) continue; + if(key.GetValue(Guid.ToString("B")) != null) return false; + } + } + return true; + } + set + { + foreach(string path in GuidBlockedList.BlockedPaths) + { + if(value) + { + RegistryEx.DeleteValue(path, Guid.ToString("B")); + } + else + { + Registry.SetValue(path, Guid.ToString("B"), ""); + } + } + ExplorerRestarter.Show(); + } + } + + public string ItemText => GuidInfo.GetText(Guid); + public string RegPath => GetGuidRegPath(UwpName, Guid); + public string ItemFilePath => GetFilePath(UwpName, Guid); + + public static string GetPackageName(string uwpName) + { + using(RegistryKey packageKey = RegistryEx.GetRegistryKey(PackagePath)) + { + if(packageKey == null) return null; + foreach(string packageName in packageKey.GetSubKeyNames()) + { + if(packageName.StartsWith(uwpName, StringComparison.OrdinalIgnoreCase)) + { + return packageName; + } + } + } + return null; + } + + public static string GetGuidRegPath(string uwpName, Guid guid) + { + string packageName = GetPackageName(uwpName); + if(packageName == null) return null; + else return $@"{PackagePath}\{packageName}\Class\{guid:B}"; + } + + public static string GetFilePath(string uwpName, Guid guid) + { + string regPath = GetGuidRegPath(uwpName, guid); + if(regPath == null) return null; + string dirPath = $@"{WindowAppsDir}\{GetPackageName(uwpName)}"; + string path = Registry.GetValue(regPath, "DllPath", null)?.ToString(); + if(path.IsNullOrWhiteSpace()) return dirPath; + else return $@"{dirPath}\{path}"; + } + + public string SearchText => Text; + public string ValueName => "DllPath"; + public MenuButton BtnShowMenu { get; set; } + public VisibleCheckBox ChkVisible { get; set; } + public RegLocationMenuItem TsiRegLocation { get; set; } + public FileLocationMenuItem TsiFileLocation { get; set; } + public FilePropertiesMenuItem TsiFileProperties { get; set; } + public WebSearchMenuItem TsiSearch { get; set; } + public DeleteMeMenuItem TsiDeleteMe { get; set; } + public RegExportMenuItem TsiRegExport { get; set; } + public HandleGuidMenuItem TsiHandleGuid { get; set; } + readonly ToolStripMenuItem TsiDetails = new ToolStripMenuItem(AppString.Menu.Details); + + private void InitializeComponents() + { + BtnShowMenu = new MenuButton(this); + ChkVisible = new VisibleCheckBox(this); + TsiSearch = new WebSearchMenuItem(this); + TsiFileLocation = new FileLocationMenuItem(this); + TsiFileProperties = new FilePropertiesMenuItem(this); + TsiRegLocation = new RegLocationMenuItem(this); + TsiDeleteMe = new DeleteMeMenuItem(this); + TsiRegExport = new RegExportMenuItem(this); + TsiHandleGuid = new HandleGuidMenuItem(this, false); + this.ContextMenuStrip.Items.AddRange(new ToolStripItem[] { TsiHandleGuid, + new ToolStripSeparator(), TsiDetails, new ToolStripSeparator(), TsiDeleteMe }); + TsiDetails.DropDownItems.AddRange(new ToolStripItem[] { TsiSearch, new ToolStripSeparator(), + TsiFileProperties, TsiFileLocation, TsiRegLocation, TsiRegExport }); + } + + public void DeleteMe() + { + RegistryEx.DeleteKeyTree(this.RegPath); + this.Dispose(); + } + } +} \ No newline at end of file diff --git a/ContextMenuManager/GuidInfo.cs b/ContextMenuManager/GuidInfo.cs index dd3b3bb..d1fc8e1 100644 --- a/ContextMenuManager/GuidInfo.cs +++ b/ContextMenuManager/GuidInfo.cs @@ -24,15 +24,6 @@ namespace ContextMenuManager public int IconIndex { get; set; } } - static GuidInfo() - { - //将Skype添加到字典 - Guid skypeGuid = new Guid(VisibleRegRuleItem.SkypeGuid); - FilePathDic.Add(skypeGuid, null); - ItemTextDic.Add(skypeGuid, AppString.Item.ShareWithSkype); - ItemImageDic.Add(skypeGuid, AppImage.Skype); - } - private static readonly IniReader AppDic = new IniReader(new StringBuilder(Properties.Resources.GuidInfosDic)); public static readonly IniReader UserDic = new IniReader(AppConfig.UserGuidInfosDic); public static readonly IniReader WebDic = new IniReader(AppConfig.WebGuidInfosDic); @@ -40,10 +31,12 @@ namespace ContextMenuManager private static readonly Dictionary FilePathDic = new Dictionary(); public static readonly Dictionary ItemTextDic = new Dictionary(); public static readonly Dictionary ItemImageDic = new Dictionary(); + public static readonly Dictionary UwpNameDic = new Dictionary(); - private static bool TryGetValue(string section, string key, out string value) + private static bool TryGetValue(Guid guid, string key, out string value) { //用户自定义字典优先 + string section = guid.ToString(); if(UserDic.TryGetValue(section, key, out value)) return true; if(WebDic.TryGetValue(section, key, out value)) return true; if(AppDic.TryGetValue(section, key, out value)) return true; @@ -57,30 +50,38 @@ namespace ContextMenuManager if(FilePathDic.ContainsKey(guid)) filePath = FilePathDic[guid]; else { - foreach(string clsidPath in ClsidPaths) + string uwpName = GetUwpName(guid); + if(!string.IsNullOrEmpty(uwpName)) { - using(RegistryKey guidKey = RegistryEx.GetRegistryKey($@"{clsidPath}\{guid:B}")) + filePath = UwpModeItem.GetFilePath(uwpName, guid); + } + else + { + foreach(string clsidPath in ClsidPaths) { - if(guidKey == null) continue; - foreach(string keyName in new[] { "InprocServer32", "LocalServer32" }) + using(RegistryKey guidKey = RegistryEx.GetRegistryKey($@"{clsidPath}\{guid:B}")) { - using(RegistryKey key = guidKey.OpenSubKey(keyName)) + if(guidKey == null) continue; + foreach(string keyName in new[] { "InprocServer32", "LocalServer32" }) { - if(key == null) continue; - string value1 = key.GetValue("CodeBase")?.ToString()?.Replace("file:///", "")?.Replace('/', '\\'); - if(File.Exists(value1)) + using(RegistryKey key = guidKey.OpenSubKey(keyName)) { - filePath = value1; break; - } - string value2 = key.GetValue("")?.ToString(); - value2 = ObjectPath.ExtractFilePath(value2); - if(File.Exists(value2)) - { - filePath = value2; break; + if(key == null) continue; + string value1 = key.GetValue("CodeBase")?.ToString()?.Replace("file:///", "")?.Replace('/', '\\'); + if(File.Exists(value1)) + { + filePath = value1; break; + } + string value2 = key.GetValue("")?.ToString(); + value2 = ObjectPath.ExtractFilePath(value2); + if(File.Exists(value2)) + { + filePath = value2; break; + } } } + if(File.Exists(filePath)) break; } - if(File.Exists(filePath)) break; } } FilePathDic.Add(guid, filePath); @@ -95,7 +96,7 @@ namespace ContextMenuManager if(ItemTextDic.ContainsKey(guid)) itemText = ItemTextDic[guid]; else { - if(TryGetValue(guid.ToString(), "Text", out itemText)) + if(TryGetValue(guid, "Text", out itemText)) { itemText = GetAbsStr(guid, itemText, true); itemText = ResourceString.GetDirectString(itemText); @@ -116,7 +117,7 @@ namespace ContextMenuManager if(itemText.IsNullOrWhiteSpace()) { string filePath = GetFilePath(guid); - if(filePath != null) + if(File.Exists(filePath)) { itemText = FileVersionInfo.GetVersionInfo(filePath).FileDescription; if(itemText.IsNullOrWhiteSpace()) @@ -151,7 +152,7 @@ namespace ContextMenuManager if(IconLocationDic.ContainsKey(guid)) location = IconLocationDic[guid]; else { - if(TryGetValue(guid.ToString(), "Icon", out string value)) + if(TryGetValue(guid, "Icon", out string value)) { value = GetAbsStr(guid, value, false); int index = value.LastIndexOf(','); @@ -168,6 +169,19 @@ namespace ContextMenuManager return location; } + public static string GetUwpName(Guid guid) + { + string uwpName = null; + if(guid.Equals(Guid.Empty)) return uwpName; + if(UwpNameDic.ContainsKey(guid)) uwpName = UwpNameDic[guid]; + else + { + TryGetValue(guid, "UwpName", out uwpName); + UwpNameDic.Add(guid, uwpName); + } + return uwpName; + } + private static string GetAbsStr(Guid guid, string relStr, bool isName) { string absStr = relStr; diff --git a/ContextMenuManager/Properties/Resources.Designer.cs b/ContextMenuManager/Properties/Resources.Designer.cs index deaee76..e4082ad 100644 --- a/ContextMenuManager/Properties/Resources.Designer.cs +++ b/ContextMenuManager/Properties/Resources.Designer.cs @@ -312,16 +312,6 @@ namespace ContextMenuManager.Properties { } } - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap Skype { - get { - object obj = ResourceManager.GetObject("Skype", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -396,5 +386,20 @@ namespace ContextMenuManager.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// 查找类似 [Microsoft.SkypeApp] + ///Guid=776dbc8d-7347-478c-8d71-791e12ef49d8 + ///Scene=File + /// + ///[Microsoft.WindowsTerminal] + ///Guid=9f156763-7844-4dc4-b2b1-901f640f5155 + ///Scene=Directory|Background 的本地化字符串。 + /// + internal static string UwpModeItemsDic { + get { + return ResourceManager.GetString("UwpModeItemsDic", resourceCulture); + } + } } } diff --git a/ContextMenuManager/Properties/Resources.resx b/ContextMenuManager/Properties/Resources.resx index a560078..b947030 100644 --- a/ContextMenuManager/Properties/Resources.resx +++ b/ContextMenuManager/Properties/Resources.resx @@ -178,9 +178,6 @@ resources\images\setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - resources\images\skype.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - resources\images\star.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,4 +199,7 @@ resources\images\up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + resources\texts\uwpmodeitemsdic.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + \ No newline at end of file diff --git a/ContextMenuManager/Properties/Resources/Images/Skype.png b/ContextMenuManager/Properties/Resources/Images/Skype.png deleted file mode 100644 index 84b2de0ebb73c1b0504b1122d13e78b2a5c9cd1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1650 zcmb`G`BT$}7R4`-R2HEuPg|p+)dT^HsHLt|D-sM(L8u@U3(~UGih{IkRa?*p7OG)U z)@p!QC?F7o2n0}x5I}*j*d`#!H=Ar(%|a3gTk(H*XXf5>X70@W>2orCyiZt|Vax!) z!js_s)r#+WKPIbIb|}}h5nvVgobtmjFE2xUJH&NCLLdCxv2ul9yWlDluCm}4HYATi z%1gM}4{5I;tsgR8!S75U_5pFgGK~poLvUjh(#9ZT2yTxU5r=`uf^-gKaDm7HB4V7* zF(xAB>BD9j9JAjM(>n;{^g_-6DUPBQZ zivI=@3ku&r5dx$)Ktjw5c$Rr%Hg|b;xqP@QfIJ}-iQtcMC>8=~+?X_OdjGB21A#ed z+$LXuDH3ih6hJ8($fNKOfxi&*8otFN4v+;vo`iBCludq6J_Y5|P$hz@NvNHGDlybZ zfFeUvq-cuFtYX}>R%}rvUPF;Uy%_4{@I+xwow9uV)|4uPCMC2eOtkn!%D z?stLRs^CF&(6IL63whLlCSrIdw)*LRKUyJdzx$y~3@z?`0C$_+!( zxi<;}Ph}9O=S7-@3C;YJZb7PBkj*Y?<`(tyOSAJ!hQ*~7y{Gj5p%wV+hS8XnS4MGP zd7ptVCr2Y!im}Dh{g_|U7&E^w%J$gCp6Yd&*PV9#cRQ1Ewo1Q!g$p?w+p*KH<^Un# z#Sktu4}ah1c906csDiJ!ABo%Qe1l)q(4{p>@dmO{$6H*hNZoVPOjh-d*j|Zx)d-c zvCciT5X^$7%TxsQh_B}ig>qD0CbHs%EnQ-VC9toxP|BAqS1&XWhJx=sJam*_?dIXwraNU=>qq{0Sf@22rGDC?N4VQrJ1i<_WaFVy{0p2@<+Io<#bDKTN<$3>((BeN%MD1aImIDx9!zr z6-2~C%I9I2LVs-t-1$-Pnlvhk0Et`knP~bhgZbVKA<06M z$Vdy+b8C0TZnVn6Xt{r4(~i>rq0&3zZL7trrtqmwXg$l-iz6!j0#$C*;~D^zpue)2 z_QAz=R-P#JN%VA+jZth=4u42wV*Ymi%@i%Epfa!2{?Ae*P+4-!F$P^_-QsBUPlE%k zzOeTEj=`&~{sWr;$#r}YjzSE)LG^D9p{Dsf3GH0OM*>v7ih1q^q!Z9hsUdA24 zuCeNTbkv6a@h4X6Pn2bfURD%`v>n--b>hzp+pqr^RN`vycM5%>QldW--s0e~Eu6!H zBo8M--<|Oigqia3NpcUal#Gus*6EYg`k2_r^x4?Qx1+s6vPUp$84II9-ZMHy_-{^C zgxeJ%FX^`aHo~scy_Rd8izy*4r>nJTib~AzliV{@tUi^M-TI*Eg2yADwrM^-d4Fmk zZOqO$4jFBayPsr-G9s(Zocjm + + + + + + + + + + + + + \ No newline at end of file diff --git a/ContextMenuManager/Updater.cs b/ContextMenuManager/Updater.cs index 41df508..c87560a 100644 --- a/ContextMenuManager/Updater.cs +++ b/ContextMenuManager/Updater.cs @@ -13,6 +13,7 @@ namespace ContextMenuManager const string GuidInfosDicUrl = "https://gitee.com/BluePointLilac/ContextMenuManager/raw/master/ContextMenuManager/Properties/Resources/Texts/GuidInfosDic.ini"; const string ThirdRulesDicUrl = "https://gitee.com/BluePointLilac/ContextMenuManager/raw/master/ContextMenuManager/Properties/Resources/Texts/ThirdRulesDic.xml"; const string EnhanceMenusDicUrl = "https://gitee.com/BluePointLilac/ContextMenuManager/raw/master/ContextMenuManager/Properties/Resources/Texts/EnhanceMenusDic.xml"; + const string UwpModeItemsDicUrl = "https://gitee.com/BluePointLilac/ContextMenuManager/raw/master/ContextMenuManager/Properties/Resources/Texts/UwpModeItemsDic.xml"; public static void PeriodicUpdate() { @@ -34,6 +35,7 @@ namespace ContextMenuManager UpdateText(AppConfig.WebGuidInfosDic, GuidInfosDicUrl); UpdateText(AppConfig.WebThirdRulesDic, ThirdRulesDicUrl); UpdateText(AppConfig.WebEnhanceMenusDic, EnhanceMenusDicUrl); + UpdateText(AppConfig.WebUwpModeItemsDic, UwpModeItemsDicUrl); try { return UpdateApp(); } catch { return false; } } diff --git a/Screenshot.png b/Screenshot.png index 80ec73108f131dadba3ea8108b6e5e382887ca75..8b065a2d73abbacc2128ebd9a65e4f5df7d7ed65 100644 GIT binary patch literal 60382 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 literal 59592 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 H@%w)O>Y*dn diff --git a/languages/zh-CN.ini b/languages/zh-CN.ini index 818abca..0549241 100644 --- a/languages/zh-CN.ini +++ b/languages/zh-CN.ini @@ -137,7 +137,6 @@ RecycleBinProperties = 属性(&R) RemovableDrive = 可移动磁盘 BuildSendtoMenu = 快速构建发送到子菜单 UseStoreOpenWith = 在Microsoft Store中查找应用 -ShareWithSkype = 使用 Skype 共享 NewItem = 新建一个菜单项目 AddGuidBlockedItem = 添加GUID锁定项目 LockNewMenu = 锁定新建菜单 @@ -186,6 +185,7 @@ AudioDirectory = 音频目录 CheckReference = 请勾选你想要引用的菜单项目 CheckCopy = 请勾选你想要复制的菜单项目 SelectGroup = 请选择保存分组 +SelectNewItemType = 请选择新建菜单类型 SelectSubMenuMode = 该多级菜单子项目数为0, 你有两个选择:\n①该多级菜单的所有子菜单项目私有(推荐),\n②该多级菜单可与其他多级菜单引用相同子项,\n请做出你的选择...... [MessageBox] @@ -242,10 +242,7 @@ CreateGroup = 新建一个分组 [Other] RestartExplorer = 当前部分操作需要重启文件资源管理器生效 DictionaryDescription = 字典说明 -LanguageDictionary = 程序语言 GuidInfosDictionary = GUID信息 -ThridRulesDictionary = 三方规则 -CommonItemsDictionary = 常用菜单 Translators = 翻译贡献者 OtherLanguages = 下载或上传其他语言文件 DonationList = 捐赠名单