适配Win7系统(.Net Framework 3.5),修复一些bug,优化部分代码

This commit is contained in:
蓝点lilac
2020-10-28 14:02:30 +08:00
parent dff17afdb8
commit 2e845da12c
31 changed files with 436 additions and 376 deletions

View File

@@ -56,15 +56,15 @@ namespace ContextMenuManager
///<summary>管理员小盾牌</summary>
public static readonly Image Shield = ResourceIcon.GetIcon("imageres.dll", 73).ToBitmap();
///<summary>资源管理器图标</summary>
public static readonly Image Explorer = ResourceIcon.GetIcon("imageres.dll", 203).ToBitmap();
public static readonly Image Explorer = ResourceIcon.GetIcon("explorer.exe", 0).ToBitmap();
///<summary>刷新图标</summary>
public static readonly Image Refresh = ResourceIcon.GetIcon("shell32.dll", 238).ToBitmap();
///<summary>自定义文件夹图标</summary>
public static readonly Image CustomFolder = ResourceIcon.GetIcon("imageres.dll", 306).ToBitmap();
public static readonly Image CustomFolder = ResourceIcon.GetIcon("imageres.dll", 3).ToBitmap();
///<summary>网络驱动器图标</summary>
public static readonly Image NetworkDrive = ResourceIcon.GetIcon("imageres.dll", 28).ToBitmap();
///<summary>回收站属性图标</summary>
public static readonly Image RecycleBinProperties = ResourceIcon.GetIcon("imageres.dll", -5350).ToBitmap();
public static readonly Image RecycleBinProperties = ResourceIcon.GetIcon("shell32.dll", -254).ToBitmap();
///<summary>磁盘图标</summary>
public static readonly Image Drive = ResourceIcon.GetIcon("imageres.dll", 27).ToBitmap();
///<summary>发送到图标</summary>

View File

@@ -8,7 +8,8 @@ namespace ContextMenuManager
public static IniReader UserLanguage = new IniReader(Program.LanguageFilePath);
private static readonly IniReader DefaultLanguage = new IniReader(new StringBuilder(Properties.Resources.AppLanguageDic));
private static string GetValue(string section, string key)
private static string GetStringValue(string section, string key)
{
string value = UserLanguage?.GetValue(section, key);
if(string.IsNullOrEmpty(value)) value = DefaultLanguage.GetValue(section, key);
@@ -18,248 +19,228 @@ namespace ContextMenuManager
/// <summary>常规</summary>
public static class General
{
private static string GetGeneralValue(string key) => GetValue("General", key);
public static string Language = GetGeneralValue("Language");
public static string AppName = GetGeneralValue("AppName");
private static string GetValue(string key) => GetStringValue("General", key);
public static string Language => GetValue("Language");
public static string AppName => GetValue("AppName");
}
/// <summary>工具栏</summary>
public static class ToolBar
{
private static string GetToolBarValue(string key) => GetValue("ToolBar", key);
public static string Home = GetToolBarValue("Home");
public static string Type = GetToolBarValue("Type");
public static string Rule = GetToolBarValue("Rule");
public static string About = GetToolBarValue("About");
private static string GetValue(string key) => GetStringValue("ToolBar", key);
public static string Home => GetValue("Home");
public static string Type => GetValue("Type");
public static string Rule => GetValue("Rule");
public static string About => GetValue("About");
}
/// <summary>侧边栏</summary>
public static class SideBar
{
private static string GetSideBarValue(string key) => GetValue("SideBar", key);
public static string File = GetSideBarValue("File");
public static string Folder = GetSideBarValue("Folder");
public static string Directory = GetSideBarValue("Directory");
public static string Background = GetSideBarValue("Background");
public static string Desktop = GetSideBarValue("Desktop");
public static string Drive = GetSideBarValue("Drive");
public static string AllObjects = GetSideBarValue("AllObjects");
public static string Computer = GetSideBarValue("Computer");
public static string RecycleBin = GetSideBarValue("RecycleBin");
public static string Library = GetSideBarValue("Library");
public static string New = GetSideBarValue("New");
public static string SendTo = GetSideBarValue("SendTo");
public static string OpenWith = GetSideBarValue("OpenWith");
public static string WinX = GetSideBarValue("WinX");
public static string LnkFile = GetSideBarValue("LnkFile");
public static string ExeFile = GetSideBarValue("ExeFile");
public static string TextFile = GetSideBarValue("TextFile");
public static string ImageFile = GetSideBarValue("ImageFile");
public static string VideoFile = GetSideBarValue("VideoFile");
public static string AudioFile = GetSideBarValue("AudioFile");
public static string ImageDirectory = GetSideBarValue("ImageDirectory");
public static string VideoDirectory = GetSideBarValue("VideoDirectory");
public static string AudioDirectory = GetSideBarValue("AudioDirectory");
public static string UnknownType = GetSideBarValue("UnknownType");
public static string CustomType = GetSideBarValue("CustomType");
public static string GuidBlocked = GetSideBarValue("GuidBlocked");
public static string ThirdRules = GetSideBarValue("ThirdRules");
public static string AboutApp = GetSideBarValue("AboutApp");
public static string Dictionaries = GetSideBarValue("Dictionaries");
public static string AppLanguage = GetSideBarValue("AppLanguage");
public static string Donate = GetSideBarValue("Donate");
private static string GetValue(string key) => GetStringValue("SideBar", key);
public static string File => GetValue("File");
public static string Folder => GetValue("Folder");
public static string Directory => GetValue("Directory");
public static string Background => GetValue("Background");
public static string Desktop => GetValue("Desktop");
public static string Drive => GetValue("Drive");
public static string AllObjects => GetValue("AllObjects");
public static string Computer => GetValue("Computer");
public static string RecycleBin => GetValue("RecycleBin");
public static string Library => GetValue("Library");
public static string New => GetValue("New");
public static string SendTo => GetValue("SendTo");
public static string OpenWith => GetValue("OpenWith");
public static string WinX => GetValue("WinX");
public static string LnkFile => GetValue("LnkFile");
public static string ExeFile => GetValue("ExeFile");
public static string TextFile => GetValue("TextFile");
public static string ImageFile => GetValue("ImageFile");
public static string VideoFile => GetValue("VideoFile");
public static string AudioFile => GetValue("AudioFile");
public static string ImageDirectory => GetValue("ImageDirectory");
public static string VideoDirectory => GetValue("VideoDirectory");
public static string AudioDirectory => GetValue("AudioDirectory");
public static string UnknownType => GetValue("UnknownType");
public static string CustomType => GetValue("CustomType");
public static string GuidBlocked => GetValue("GuidBlocked");
public static string ThirdRules => GetValue("ThirdRules");
public static string AboutApp => GetValue("AboutApp");
public static string Dictionaries => GetValue("Dictionaries");
public static string AppLanguage => GetValue("AppLanguage");
public static string Donate => GetValue("Donate");
}
/// <summary>状态栏</summary>
public static class StatusBar
{
private static string GetStatusBarValue(string key) => GetValue("StatusBar", key);
public static string File = GetStatusBarValue("File");
public static string Folder = GetStatusBarValue("Folder");
public static string Directory = GetStatusBarValue("Directory");
public static string Background = GetStatusBarValue("Background");
public static string Desktop = GetStatusBarValue("Desktop");
public static string Drive = GetStatusBarValue("Drive");
public static string AllObjects = GetStatusBarValue("AllObjects");
public static string Computer = GetStatusBarValue("Computer");
public static string RecycleBin = GetStatusBarValue("RecycleBin");
public static string Library = GetStatusBarValue("Library");
public static string New = GetStatusBarValue("New");
public static string SendTo = GetStatusBarValue("SendTo");
public static string OpenWith = GetStatusBarValue("OpenWith");
public static string WinX = GetStatusBarValue("WinX");
public static string LnkFile = GetStatusBarValue("LnkFile");
public static string ExeFile = GetStatusBarValue("ExeFile");
public static string TextFile = GetStatusBarValue("TextFile");
public static string ImageFile = GetStatusBarValue("ImageFile");
public static string VideoFile = GetStatusBarValue("VideoFile");
public static string AudioFile = GetStatusBarValue("AudioFile");
public static string ImageDirectory = GetStatusBarValue("ImageDirectory");
public static string VideoDirectory = GetStatusBarValue("VideoDirectory");
public static string AudioDirectory = GetStatusBarValue("AudioDirectory");
public static string UnknownType = GetStatusBarValue("UnknownType");
public static string CustomType = GetStatusBarValue("CustomType");
public static string GuidBlocked = GetStatusBarValue("GuidBlocked");
public static string ThirdRules = GetStatusBarValue("ThirdRules");
private static string GetValue(string key) => GetStringValue("StatusBar", key);
public static string File => GetValue("File");
public static string Folder => GetValue("Folder");
public static string Directory => GetValue("Directory");
public static string Background => GetValue("Background");
public static string Desktop => GetValue("Desktop");
public static string Drive => GetValue("Drive");
public static string AllObjects => GetValue("AllObjects");
public static string Computer => GetValue("Computer");
public static string RecycleBin => GetValue("RecycleBin");
public static string Library => GetValue("Library");
public static string New => GetValue("New");
public static string SendTo => GetValue("SendTo");
public static string OpenWith => GetValue("OpenWith");
public static string WinX => GetValue("WinX");
public static string LnkFile => GetValue("LnkFile");
public static string ExeFile => GetValue("ExeFile");
public static string TextFile => GetValue("TextFile");
public static string ImageFile => GetValue("ImageFile");
public static string VideoFile => GetValue("VideoFile");
public static string AudioFile => GetValue("AudioFile");
public static string ImageDirectory => GetValue("ImageDirectory");
public static string VideoDirectory => GetValue("VideoDirectory");
public static string AudioDirectory => GetValue("AudioDirectory");
public static string UnknownType => GetValue("UnknownType");
public static string CustomType => GetValue("CustomType");
public static string GuidBlocked => GetValue("GuidBlocked");
public static string ThirdRules => GetValue("ThirdRules");
}
/// <summary>菜单</summary>
public static class Menu
{
private static string GetMenuValue(string key) => GetValue("Menu", key);
public static string ChangeText = GetMenuValue("ChangeText");
public static string ItemIcon = GetMenuValue("ItemIcon");
public static string ChangeIcon = GetMenuValue("ChangeIcon");
public static string AddIcon = GetMenuValue("AddIcon");
public static string DeleteIcon = GetMenuValue("DeleteIcon");
public static string ItemPosition = GetMenuValue("ItemPosition");
public static string SetDefault = GetMenuValue("SetDefault");
public static string SetTop = GetMenuValue("SetTop");
public static string SetBottom = GetMenuValue("SetBottom");
public static string OtherAttributes = GetMenuValue("OtherAttributes");
public static string OnlyWithShift = GetMenuValue("OnlyWithShift");
public static string OnlyInExplorer = GetMenuValue("OnlyInExplorer");
public static string NoWorkingDirectory = GetMenuValue("NoWorkingDirectory");
public static string ShowSeparator = GetMenuValue("ShowSeparator");
public static string Details = GetMenuValue("Details");
public static string WebSearch = GetMenuValue("WebSearch");
public static string ChangeCommand = GetMenuValue("ChangeCommand");
public static string FileProperties = GetMenuValue("FileProperties");
public static string FileLocation = GetMenuValue("FileLocation");
public static string RegistryLocation = GetMenuValue("RegistryLocation");
public static string Delete = GetMenuValue("Delete");
public static string DeleteReference = GetMenuValue("DeleteReference");
public static string CopyGuid = GetMenuValue("CopyGuid");
public static string InitialData = GetMenuValue("InitialData");
private static string GetValue(string key) => GetStringValue("Menu", key);
public static string ChangeText => GetValue("ChangeText");
public static string ItemIcon => GetValue("ItemIcon");
public static string ChangeIcon => GetValue("ChangeIcon");
public static string AddIcon => GetValue("AddIcon");
public static string DeleteIcon => GetValue("DeleteIcon");
public static string ItemPosition => GetValue("ItemPosition");
public static string SetDefault => GetValue("SetDefault");
public static string SetTop => GetValue("SetTop");
public static string SetBottom => GetValue("SetBottom");
public static string OtherAttributes => GetValue("OtherAttributes");
public static string OnlyWithShift => GetValue("OnlyWithShift");
public static string OnlyInExplorer => GetValue("OnlyInExplorer");
public static string NoWorkingDirectory => GetValue("NoWorkingDirectory");
public static string ShowSeparator => GetValue("ShowSeparator");
public static string Details => GetValue("Details");
public static string WebSearch => GetValue("WebSearch");
public static string ChangeCommand => GetValue("ChangeCommand");
public static string FileProperties => GetValue("FileProperties");
public static string FileLocation => GetValue("FileLocation");
public static string RegistryLocation => GetValue("RegistryLocation");
public static string Delete => GetValue("Delete");
public static string DeleteReference => GetValue("DeleteReference");
public static string CopyGuid => GetValue("CopyGuid");
public static string InitialData => GetValue("InitialData");
public static string Edit => GetValue("Edit");
public static string Save => GetValue("Save");
}
/// <summary>特殊项目文本</summary>
public static class Item
{
private static string GetValue(string key) => GetStringValue("Item", key);
public static string Open => GetValue("Open");
public static string Edit => GetValue("Edit");
public static string Explore => GetValue("Explore");
public static string Play => GetValue("Play");
public static string Print => GetValue("Print");
public static string Find => GetValue("Find");
public static string Runas => GetValue("Runas");
public static string CustomFolder => GetValue("CustomFolder");
public static string MapNetworkDrive => GetValue("MapNetworkDrive");
public static string DisconnectNetworkDrive => GetValue("DisconnectNetworkDrive");
public static string RecycleBinProperties => GetValue("RecycleBinProperties");
public static string RemovableDrive => GetValue("RemovableDrive");
public static string BuildSendtoMenu => GetValue("BuildSendtoMenu");
public static string UseStoreOpenWith => GetValue("UseStoreOpenWith");
public static string NewItem => GetValue("NewItem");
public static string AddGuidBlockedItem => GetValue("AddGuidBlockedItem");
public static string CurrentExtension => GetValue("CurrentExtension");
public static string EditSubItems => GetValue("EditSubItems");
public static string InvalidItem => GetValue("InvalidItem");
public static string Separator => GetValue("Separator");
}
public static class Dialog
{
private static string GetValue(string key) => GetStringValue("Dialog", key);
public static string Ok => GetValue("Ok");
public static string Cancel => GetValue("Cancel");
public static string Browse => GetValue("Browse");
public static string Program => GetValue("Program");
public static string NewShellItem => GetValue("NewShellItem");
public static string NewSendToItem => GetValue("NewSendToItem");
public static string NewOpenWithItem => GetValue("NewOpenWithItem");
public static string ItemText => GetValue("ItemText");
public static string ItemCommand => GetValue("ItemCommand");
public static string SingleMenu => GetValue("SingleMenu");
public static string MultiMenu => GetValue("MultiMenu");
public static string InputGuid => GetValue("InputGuid");
public static string SelectExtension => GetValue("SelectExtension");
public static string CheckReference => GetValue("CheckReference");
public static string CheckCommon => GetValue("CheckCommon");
public static string SelectSubMenuMode => GetValue("SelectSubMenuMode");
}
/// <summary>消息框</summary>
public static class MessageBox
{
private static string GetMessageBoxValue(string key) => GetValue("MessageBox", key);
public static string TextCannotBeEmpty = GetMessageBoxValue("TextCannotBeEmpty");
public static string CommandCannotBeEmpty = GetMessageBoxValue("CommandCannotBeEmpty");
public static string StringParsingFailed = GetMessageBoxValue("StringParsingFailed");
public static string TextLengthCannotExceed80 = GetMessageBoxValue("TextLengthCannotExceed80");
public static string ConfirmDeletePermanently = GetMessageBoxValue("ConfirmDeletePermanently");
public static string ConfirmDeleteReference = GetMessageBoxValue("ConfirmDeleteReference");
public static string ConfirmDelete = GetMessageBoxValue("ConfirmDelete");
public static string ConfirmDeleteReferenced = GetMessageBoxValue("ConfirmDeleteReferenced");
public static string CannotAddNewItem = GetMessageBoxValue("CannotAddNewItem");
public static string UnsupportedFilename = GetMessageBoxValue("UnsupportedFilename");
public static string UnsupportedExtension = GetMessageBoxValue("UnsupportedExtension");
public static string CannotChangePath = GetMessageBoxValue("CannotChangePath");
public static string CopiedToClipboard = GetMessageBoxValue("CopiedToClipboard");
public static string UnknownGuid = GetMessageBoxValue("UnknownGuid");
public static string HasBeenAdded = GetMessageBoxValue("HasBeenAdded");
public static string EditInitialData = GetMessageBoxValue("EditInitialData");
public static string PromptIsOpenItem = GetMessageBoxValue("PromptIsOpenItem");
public static string RestartApp = GetMessageBoxValue("RestartApp");
public static string UpdateApp = GetMessageBoxValue("UpdateApp");
private static string GetValue(string key) => GetStringValue("MessageBox", key);
public static string TextCannotBeEmpty => GetValue("TextCannotBeEmpty");
public static string CommandCannotBeEmpty => GetValue("CommandCannotBeEmpty");
public static string StringParsingFailed => GetValue("StringParsingFailed");
public static string TextLengthCannotExceed80 => GetValue("TextLengthCannotExceed80");
public static string ConfirmDeletePermanently => GetValue("ConfirmDeletePermanently");
public static string ConfirmDeleteReference => GetValue("ConfirmDeleteReference");
public static string ConfirmDelete => GetValue("ConfirmDelete");
public static string ConfirmDeleteReferenced => GetValue("ConfirmDeleteReferenced");
public static string CannotAddNewItem => GetValue("CannotAddNewItem");
public static string UnsupportedFilename => GetValue("UnsupportedFilename");
public static string UnsupportedExtension => GetValue("UnsupportedExtension");
public static string CannotChangePath => GetValue("CannotChangePath");
public static string CopiedToClipboard => GetValue("CopiedToClipboard");
public static string UnknownGuid => GetValue("UnknownGuid");
public static string HasBeenAdded => GetValue("HasBeenAdded");
public static string EditInitialData => GetValue("EditInitialData");
public static string PromptIsOpenItem => GetValue("PromptIsOpenItem");
public static string RestartApp => GetValue("RestartApp");
public static string UpdateApp => GetValue("UpdateApp");
public static string FileOrFolderNotExists => GetValue("FileOrFolderNotExists");
}
/// <summary>其他文本</summary>
public static class Text
public static class Other
{
private static string GetTextValue(string key) => GetValue("Text", key);
public static string ItemName = GetTextValue("ItemName");
public static string ItemCommand = GetTextValue("ItemCommand");
public static string Single = GetTextValue("Single");
public static string Multi = GetTextValue("Multi");
public static string EditSubItems = GetTextValue("EditSubItems");
public static string Separator = GetTextValue("Separator");
public static string InvalidItem = GetTextValue("InvalidItem");
public static string CheckReference = GetTextValue("CheckReference");
public static string CheckCommon = GetTextValue("CheckCommon");
public static string InputGuid = GetTextValue("InputGuid");
public static string Explore = GetTextValue("Explore");
public static string CustomFolder = GetTextValue("CustomFolder");
public static string BuildSendtoMenu = GetTextValue("BuildSendtoMenu");
public static string UseStoreOpenWith = GetTextValue("UseStoreOpenWith");
public static string RestartExplorer = GetTextValue("RestartExplorer");
public static string NewItem = GetTextValue("NewItem");
public static string NewShellItem = GetTextValue("NewShellItem");
public static string NewSendToItem = GetTextValue("NewSendToItem");
public static string NewOpenWithItem = GetTextValue("NewOpenWithItem");
public static string NewGuidBlockedItem = GetTextValue("NewGuidBlockedItem");
public static string SelectExtension = GetTextValue("SelectExtension");
public static string CurrentExtension = GetTextValue("CurrentExtension");
public static string DictionaryDescription = GetTextValue("DictionaryDescription");
public static string LanguageDictionary = GetTextValue("LanguageDictionary");
public static string GuidInfosDictionary = GetTextValue("GuidInfosDictionary");
public static string ThridRulesDictionary = GetTextValue("ThridRulesDictionary");
public static string CommonItemsDictionary = GetTextValue("CommonItemsDictionary");
public static string Translators = GetTextValue("Translators");
public static string OtherLanguages = GetTextValue("OtherLanguages");
public static string SelectSubMenuMode = GetTextValue("SelectSubMenuMode");
public static string AboutApp = GetTextValue("AboutApp");
public static string Dictionaries = GetTextValue("Dictionaries");
public static string Donate = GetTextValue("Donate");
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");
}
/// <summary>提示文本</summary>
public static class Tip
{
private static string GetTipValue(string key) => GetValue("Tip", key);
public static string RestartExplorer = GetTipValue("RestartExplorer");
public static string CustomFolder = GetTipValue("CustomFolder");
public static string SendToDrive = GetTipValue("SendToDrive");
public static string BuildSendtoMenu = GetTipValue("BuildSendtoMenu");
public static string UseStoreOpenWith = GetTipValue("UseStoreOpenWith");
public static string EditSubItems = GetTipValue("EditSubItems");
public static string InvalidItem = GetTipValue("InvalidItem");
public static string AddSeparator = GetTipValue("AddSeparator");
public static string Separator = GetTipValue("Separator");
public static string AddExistingItems = GetTipValue("AddExistingItems");
public static string AddCommonItems = GetTipValue("AddCommonItems");
}
/// <summary>国际化字符串</summary>
public static class Indirect
{
/// <summary>确定</summary>
public static readonly string Ok = ResourceString.GetDirectString("@shell32.dll,-9752");
/// <summary>取消</summary>
public static readonly string Cancel = ResourceString.GetDirectString("@shell32.dll,-9751");
/// <summary>浏览</summary>
public static readonly string Browse = ResourceString.GetDirectString("@shell32.dll,-9015");
/// <summary>打开</summary>
public static readonly string Open = ResourceString.GetDirectString("@shell32.dll,-12850");
/// <summary>编辑</summary>
public static readonly string Edit = ResourceString.GetDirectString("@shell32.dll,-37398");
/// <summary>打印</summary>
public static readonly string Print = ResourceString.GetDirectString("@shell32.dll,-31250");
/// <summary>搜索</summary>
public static readonly string Find = ResourceString.GetDirectString("@shell32.dll,-9031");
/// <summary>播放</summary>
public static readonly string Play = ResourceString.GetDirectString("@shell32.dll,-31283");
/// <summary>以管理员身份运行</summary>
public static readonly string Runas = ResourceString.GetDirectString("@shell32.dll,-37417");
/// <summary>保存</summary>
public static readonly string Save = ResourceString.GetDirectString("@shell32.dll,-38243");
/// <summary>程序</summary>
public static readonly string Programs = ResourceString.GetDirectString("@shell32.dll,-21782");
/// <summary>可移动磁盘</summary>
public static readonly string RemovableDrive = ResourceString.GetDirectString("@shell32.dll,-9309");
/// <summary>映射网络驱动器</summary>
public static readonly string MapNetworkDrive = ResourceString.GetDirectString("@shell32.dll,-31300");
/// <summary>断开网络驱动器的连接</summary>
public static readonly string DisconnectNetworkDrive = ResourceString.GetDirectString("@shell32.dll,-31304");
/// <summary>回收站属性</summary>
public static readonly string RecycleBinProperties = ResourceString.GetDirectString("@shell32.dll,-31338");
///<summary>文件或文件夹不存在</summary>
public static readonly string FileOrFolderNotExists = ResourceString.GetDirectString("@shell32.dll,-4132");
private static string GetValue(string key) => GetStringValue("Tip", key);
public static string RestartExplorer => GetValue("RestartExplorer");
public static string CustomFolder => GetValue("CustomFolder");
public static string SendToDrive => GetValue("SendToDrive");
public static string BuildSendtoMenu => GetValue("BuildSendtoMenu");
public static string EditSubItems => GetValue("EditSubItems");
public static string InvalidItem => GetValue("InvalidItem");
public static string AddSeparator => GetValue("AddSeparator");
public static string Separator => GetValue("Separator");
public static string AddExistingItems => GetValue("AddExistingItems");
public static string AddCommonItems => GetValue("AddCommonItems");
}
}
}

View File

@@ -54,14 +54,14 @@ namespace BulePointLilac.Controls
{
Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
DialogResult = DialogResult.OK,
Text = AppString.Indirect.Ok,
Text = AppString.Dialog.Ok,
AutoSize = true
};
readonly Button BtnCancel = new Button
{
Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
DialogResult = DialogResult.Cancel,
Text = AppString.Indirect.Cancel,
Text = AppString.Dialog.Cancel,
AutoSize = true
};

View File

@@ -117,6 +117,7 @@ namespace BulePointLilac.Controls
{
public int Compare(MyListItem x, MyListItem y)
{
if(x.Equals(y)) return 0;
string[] strs = { x.Text, y.Text };
Array.Sort(strs);
if(strs[0] == x.Text) return -1;

View File

@@ -50,9 +50,19 @@ namespace BulePointLilac.Methods
/// <returns>成功提取返回现有文件路径否则返回值为null</returns>
public static string ExtractFilePath(string command)
{
return ExtractFilePath(command, out _);
}
/// <param name="shortPath">文件短路径</param>
public static string ExtractFilePath(string command, out string shortPath)
{
shortPath = null;
if(string.IsNullOrWhiteSpace(command)) return null;
command = Environment.ExpandEnvironmentVariables(command).Replace(@"\\", @"\");
if(File.Exists(command)) return command;
if(File.Exists(command)) {
shortPath = command;
return command;
}
string[] strs = Array.FindAll(command.Split(IllegalChars), str
=> IgnoreCommandParts.Any(part => !part.Equals(str.Trim()))).Reverse().ToArray();
@@ -66,8 +76,15 @@ namespace BulePointLilac.Methods
if(path1.Contains(",")) paths.Add(path1.Substring(0, path1.LastIndexOf(',')));
foreach(string path in paths)
{
if(File.Exists(path)) return path;
if(GetFullFilePath(path, out string fullPath)) return fullPath;
if(File.Exists(path)) {
shortPath = path;
return path;
}
if(GetFullFilePath(path, out string fullPath))
{
shortPath = path;
return fullPath;
}
}
index = path1.LastIndexOf(' ');
} while(index != -1);

View File

@@ -372,4 +372,7 @@
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>Xcopy $(ProjectDir)\Properties\Resources\Texts\AppLanguageDic.ini $(SolutionDir)\languages\zh-CN.ini /y</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -7,7 +7,6 @@ using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ContextMenuManager.Controls
@@ -24,7 +23,7 @@ namespace ContextMenuManager.Controls
readonly Label lblInfo = new Label
{
Font = new Font(SystemFonts.MenuFont.FontFamily, 10F),
Text = AppString.Text.Donate,
Text = AppString.Other.Donate,
AutoSize = true
};
@@ -93,18 +92,18 @@ namespace ContextMenuManager.Controls
}
readonly TabPage[] pages = new TabPage[] {
new TabPage(AppString.Text.DictionaryDescription),
new TabPage(AppString.Text.LanguageDictionary),
new TabPage(AppString.Text.GuidInfosDictionary),
new TabPage(AppString.Text.ThridRulesDictionary),
new TabPage(AppString.Text.CommonItemsDictionary)
new TabPage(AppString.Other.DictionaryDescription),
new TabPage(AppString.Other.LanguageDictionary),
new TabPage(AppString.Other.GuidInfosDictionary),
new TabPage(AppString.Other.ThridRulesDictionary),
new TabPage(AppString.Other.CommonItemsDictionary)
};
readonly AboutAppBox[] boxs = new AboutAppBox[5];
readonly ContextMenuStrip cms = new ContextMenuStrip();
readonly ToolStripItem[] items = new ToolStripItem[] {
new ToolStripMenuItem(AppString.Indirect.Edit),
new ToolStripMenuItem(AppString.Menu.Edit),
new ToolStripSeparator(),
new ToolStripMenuItem(AppString.Indirect.Save)
new ToolStripMenuItem(AppString.Menu.Save)
};
[DllImport("user32.dll")]
@@ -170,15 +169,15 @@ namespace ContextMenuManager.Controls
}
bool hadLoaded = false;
public async void LoadTexts()
public void LoadTexts()
{
if(hadLoaded) return;
hadLoaded = true;
boxs[0].Text = AppString.Text.Dictionaries;
await Task.Run(() => boxs[1].BeginInvoke(new Action<string>(boxs[1].LoadIni), new[] { Properties.Resources.AppLanguageDic }));
await Task.Run(() => boxs[2].BeginInvoke(new Action<string>(boxs[2].LoadIni), new[] { Properties.Resources.GuidInfosDic }));
await Task.Run(() => boxs[3].BeginInvoke(new Action<string>(boxs[3].LoadXml), new[] { Properties.Resources.ThirdRulesDic }));
await Task.Run(() => boxs[4].BeginInvoke(new Action<string>(boxs[4].LoadXml), new[] { Properties.Resources.ShellCommonDic }));
boxs[0].Text = AppString.Other.Dictionaries;
this.BeginInvoke(new Action<string>(boxs[1].LoadIni), new[] { Properties.Resources.AppLanguageDic });
this.BeginInvoke(new Action<string>(boxs[2].LoadIni), new[] { Properties.Resources.GuidInfosDic });
this.BeginInvoke(new Action<string>(boxs[3].LoadXml), new[] { Properties.Resources.ThirdRulesDic });
this.BeginInvoke(new Action<string>(boxs[4].LoadXml), new[] { Properties.Resources.ShellCommonDic });
}
}
@@ -204,7 +203,7 @@ namespace ContextMenuManager.Controls
readonly LinkLabel llbOtherLanguages = new LinkLabel
{
Text = AppString.Text.OtherLanguages,
Text = AppString.Other.OtherLanguages,
AutoSize = true
};
@@ -236,7 +235,7 @@ namespace ContextMenuManager.Controls
cmbLanguages.Items.Clear();
cmbLanguages.Items.Add("(默认) 简体中文");
cmbLanguages.SelectedIndex = 0;
string str = AppString.Text.Translators + Environment.NewLine;
string str = AppString.Other.Translators + Environment.NewLine;
DirectoryInfo di = new DirectoryInfo(Program.LanguagesDir);
if(di.Exists)
{

View File

@@ -13,7 +13,7 @@ namespace ContextMenuManager.Controls
this.Visible = false;
this.Dock = DockStyle.Bottom;
this.Image = AppImage.Explorer;
this.Text = AppString.Text.RestartExplorer;
this.Text = AppString.Other.RestartExplorer;
MyToolTip.SetToolTip(BtnRestart, AppString.Tip.RestartExplorer);
this.AddCtr(BtnRestart);
this.CanMoveForm();

View File

@@ -37,20 +37,13 @@ namespace ContextMenuManager.Controls
{
if(extKey == null) return null;
string defaultType = extKey.GetValue("")?.ToString();
if(TypeNameExists(defaultType)) return defaultType;
using(var key = extKey.OpenSubKey("OpenWithProgids"))
{
if(key == null)
{
if(TypeNameExists(defaultType)) return defaultType;
else return null;
}
if(key == null) return null;
foreach(string valueName in key.GetValueNames())
{
if(!includeUWP && key.GetValueKind(valueName) != Microsoft.Win32.RegistryValueKind.String)
{
if(TypeNameExists(defaultType)) return defaultType;
continue;
}
if(!includeUWP && key.GetValueKind(valueName) != Microsoft.Win32.RegistryValueKind.String) continue;
if(TypeNameExists(valueName)) return valueName;
}
}
@@ -65,7 +58,7 @@ namespace ContextMenuManager.Controls
{
this.AcceptButton = btnOk;
this.CancelButton = btnCancel;
this.Text = AppString.Text.SelectExtension;
this.Text = AppString.Dialog.SelectExtension;
this.Font = SystemFonts.MenuFont;
this.ShowIcon = this.ShowInTaskbar = false;
this.MaximizeBox = this.MinimizeBox = false;
@@ -98,13 +91,13 @@ namespace ContextMenuManager.Controls
};
readonly Button btnOk = new Button
{
Text = AppString.Indirect.Ok,
Text = AppString.Dialog.Ok,
AutoSize = true
};
readonly Button btnCancel = new Button
{
DialogResult = DialogResult.Cancel,
Text = AppString.Indirect.Cancel,
Text = AppString.Dialog.Cancel,
AutoSize = true
};

View File

@@ -34,11 +34,11 @@ namespace ContextMenuManager.Controls
private void AddNewItem()
{
NewItem newItem = new NewItem { Text = AppString.Text.NewGuidBlockedItem };
NewItem newItem = new NewItem { Text = AppString.Item.AddGuidBlockedItem };
this.AddItem(newItem);
newItem.NewItemAdd += (sender, e) =>
{
using(InputDialog dlg = new InputDialog { Title = AppString.Text.InputGuid })
using(InputDialog dlg = new InputDialog { Title = AppString.Dialog.InputGuid })
{
if(GuidInfo.TryGetGuid(Clipboard.GetText(), out Guid guid)) dlg.Text = guid.ToString();
if(dlg.ShowDialog() != DialogResult.OK) return;

View File

@@ -8,9 +8,9 @@ namespace ContextMenuManager.Controls
public NewItem()
{
this.Image = AppImage.NewItem;
this.Text = AppString.Text.NewItem;
this.Text = AppString.Item.NewItem;
this.AddCtr(BtnAddNewItem);
MyToolTip.SetToolTip(BtnAddNewItem, AppString.Text.NewItem);
MyToolTip.SetToolTip(BtnAddNewItem, AppString.Item.NewItem);
BtnAddNewItem.MouseDown += (sender, e) => NewItemAdd?.Invoke(null, null);
}
public event EventHandler NewItemAdd;

View File

@@ -24,32 +24,32 @@ namespace ContextMenuManager.Controls
public string ItemText { get => txtText.Text; set => txtText.Text = value; }
public string ItemCommand { get => txtCommand.Text; set => txtCommand.Text = value; }
protected readonly Label lblName = new Label
protected readonly Label lblText = new Label
{
Text = AppString.Text.ItemName,
Text = AppString.Dialog.ItemText,
AutoSize = true
};
protected readonly Label lblCommand = new Label
{
Text = AppString.Text.ItemCommand,
Text = AppString.Dialog.ItemCommand,
AutoSize = true
};
protected readonly TextBox txtText = new TextBox();
protected readonly TextBox txtCommand = new TextBox();
protected readonly Button btnBrowse = new Button
{
Text = AppString.Indirect.Browse,
Text = AppString.Dialog.Browse,
AutoSize = true
};
protected readonly Button btnOk = new Button
{
Text = AppString.Indirect.Ok,
Text = AppString.Dialog.Ok,
AutoSize = true
};
protected readonly Button btnCancel = new Button
{
DialogResult = DialogResult.Cancel,
Text = AppString.Indirect.Cancel,
Text = AppString.Dialog.Cancel,
AutoSize = true
};
@@ -57,15 +57,15 @@ namespace ContextMenuManager.Controls
protected virtual void InitializeComponents()
{
this.Controls.AddRange(new Control[] { lblName, lblCommand, txtText, txtCommand, btnBrowse, btnOk, btnCancel });
this.Controls.AddRange(new Control[] { lblText, lblCommand, txtText, txtCommand, btnBrowse, btnOk, btnCancel });
int a = 20.DpiZoom();
btnBrowse.Anchor = btnOk.Anchor = btnCancel.Anchor = AnchorStyles.Right | AnchorStyles.Top;
txtText.Top = lblName.Top = lblName.Left = lblCommand.Left = a;
txtText.Top = lblText.Top = lblText.Left = lblCommand.Left = a;
btnBrowse.Top = txtCommand.Top = lblCommand.Top = txtText.Bottom + a;
btnOk.Top = btnCancel.Top = btnBrowse.Bottom + a;
btnCancel.Left = btnBrowse.Left = this.ClientSize.Width - btnCancel.Width - a;
btnOk.Left = btnCancel.Left - btnOk.Width - a;
int b = Math.Max(lblName.Width, lblCommand.Width) + btnBrowse.Width + 4 * a;
int b = Math.Max(lblText.Width, lblCommand.Width) + btnBrowse.Width + 4 * a;
this.ClientSize = new Size(250.DpiZoom() + b, btnOk.Bottom + a);
this.MinimumSize = this.Size;
this.Resize += (sender, e) =>

View File

@@ -31,7 +31,7 @@ namespace ContextMenuManager.Controls
protected override void InitializeComponents()
{
base.InitializeComponents();
this.Text = AppString.Text.NewOpenWithItem;
this.Text = AppString.Dialog.NewOpenWithItem;
btnBrowse.Click += (sender, e) => BrowseFile();
btnOk.Click += (sender, e) =>
{
@@ -61,7 +61,7 @@ namespace ContextMenuManager.Controls
{
using(OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Filter = $"{AppString.Indirect.Programs}|*.exe";
dlg.Filter = $"{AppString.Dialog.Program}|*.exe";
if(dlg.ShowDialog() == DialogResult.OK)
{
ItemCommand = $"\"{dlg.FileName}\" \"%1\"";

View File

@@ -40,7 +40,7 @@ namespace ContextMenuManager.Controls
protected override void InitializeComponents()
{
base.InitializeComponents();
this.Text = AppString.Text.NewSendToItem;
this.Text = AppString.Dialog.NewSendToItem;
this.Controls.AddRange(new[] { rdoFile, rdoFolder });
rdoFile.Top = rdoFolder.Top = btnOk.Top;
rdoFile.Left = lblCommand.Left;
@@ -66,7 +66,7 @@ namespace ContextMenuManager.Controls
}
if(ObjectPath.ExtractFilePath(ItemCommand) == null && !Directory.Exists(ItemCommand))
{
MessageBoxEx.Show(AppString.Indirect.FileOrFolderNotExists);
MessageBoxEx.Show(AppString.MessageBox.FileOrFolderNotExists);
return;
}
AddNewItem();
@@ -78,10 +78,10 @@ namespace ContextMenuManager.Controls
{
using(OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Filter = $"{AppString.Indirect.Programs}|*.exe;*.bat;*.cmd;*.vbs;*.vbe;*.jse;*.wsf";
dlg.Filter = $"{AppString.Dialog.Program}|*.exe;*.bat;*.cmd;*.vbs;*.vbe;*.jse;*.wsf";
if(dlg.ShowDialog() == DialogResult.OK)
{
ItemCommand = dlg.FileName;
ItemCommand = $"\"{dlg.FileName}\"";
ItemText = Path.GetFileNameWithoutExtension(dlg.FileName);
}
}
@@ -106,8 +106,15 @@ namespace ContextMenuManager.Controls
FilePath = ObjectPath.GetNewPathWithIndex(FilePath, ObjectPath.PathType.File);
IWshRuntimeLibrary.IWshShortcut shortcut = WshShell.CreateShortcut(FilePath);
shortcut.TargetPath = ItemCommand;
if(rdoFile.Checked) shortcut.WorkingDirectory = Path.GetDirectoryName(ItemCommand);
if(rdoFile.Checked)
{
ItemCommand = Environment.ExpandEnvironmentVariables(ItemCommand);
shortcut.TargetPath = ObjectPath.ExtractFilePath(ItemCommand, out string shortPath);
string str = ItemCommand.Substring(ItemCommand.IndexOf(shortPath) + shortPath.Length);
shortcut.Arguments = str.Substring(str.IndexOf(" ") + 1);
shortcut.WorkingDirectory = Path.GetDirectoryName(shortcut.TargetPath);
}
else shortcut.TargetPath = ItemCommand;
shortcut.Save();
DesktopIniHelper.SetLocalizedFileName(FilePath, ItemText);
}

View File

@@ -36,13 +36,13 @@ namespace ContextMenuManager.Controls
readonly RadioButton rdoSingle = new RadioButton
{
Text = AppString.Text.Single,
Text = AppString.Dialog.SingleMenu,
AutoSize = true,
Checked = true
};
readonly RadioButton rdoMulti = new RadioButton
{
Text = AppString.Text.Multi,
Text = AppString.Dialog.MultiMenu,
AutoSize = true
};
@@ -63,7 +63,7 @@ namespace ContextMenuManager.Controls
protected override void InitializeComponents()
{
base.InitializeComponents();
this.Text = AppString.Text.NewShellItem;
this.Text = AppString.Dialog.NewShellItem;
this.Controls.AddRange(new[] { rdoSingle, rdoMulti });
rdoSingle.Top = rdoMulti.Top = btnOk.Top;
rdoSingle.Left = lblCommand.Left;
@@ -95,7 +95,7 @@ namespace ContextMenuManager.Controls
{
using(OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Filter = $"{AppString.Indirect.Programs}|*.exe;*.bat;*.cmd;*.pif;*.com";
dlg.Filter = $"{AppString.Dialog.Program}|*.exe;*.bat;*.cmd;*.pif;*.com";
if(dlg.ShowDialog() != DialogResult.OK) return;
ItemCommand = $"\"{dlg.FileName}\"";
ItemText = Path.GetFileNameWithoutExtension(dlg.FileName);

View File

@@ -16,7 +16,12 @@ namespace ContextMenuManager.Controls
this.LoadCommonItems();
this.SortItemByText();
this.AddNewItem();
this.InsertItem(new RegRuleItem(RegRuleItem.UseStoreOpenWith) { MarginRight = RegRuleItem.SysMarginRignt }, 1);
RegRuleItem storeItem = new RegRuleItem(RegRuleItem.UseStoreOpenWith)
{
MarginRight = RegRuleItem.SysMarginRignt,
Visible = Environment.OSVersion.Version.Major == 10
};
this.InsertItem(storeItem, 1);
}
private void LoadCommonItems()

View File

@@ -128,7 +128,7 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = AppString.Text.CustomFolder,
Text = AppString.Item.CustomFolder,
Image = AppImage.CustomFolder,
Tip = AppString.Tip.CustomFolder,
RestartExplorer = true
@@ -143,7 +143,7 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = $"{AppString.Indirect.MapNetworkDrive} && {AppString.Indirect.DisconnectNetworkDrive}",
Text = $"{AppString.Item.MapNetworkDrive} && {AppString.Item.DisconnectNetworkDrive}",
Image = AppImage.NetworkDrive,
RestartExplorer = true
}
@@ -157,7 +157,7 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = AppString.Indirect.RecycleBinProperties,
Text = AppString.Item.RecycleBinProperties,
Image = AppImage.RecycleBinProperties,
RestartExplorer = true
}
@@ -171,7 +171,7 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = AppString.Indirect.RemovableDrive,
Text = AppString.Item.RemovableDrive,
Image = AppImage.Drive,
Tip = AppString.Tip.SendToDrive,
RestartExplorer = true
@@ -186,7 +186,7 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = AppString.Text.BuildSendtoMenu,
Text = AppString.Item.BuildSendtoMenu,
Image = AppImage.SendTo,
Tip = AppString.Tip.BuildSendtoMenu
}
@@ -200,9 +200,8 @@ namespace ContextMenuManager.Controls
},
ItemInfo = new ItemInfo
{
Text = AppString.Text.UseStoreOpenWith,
Image = AppImage.MicrosoftStore,
Tip = AppString.Tip.UseStoreOpenWith
Text = AppString.Item.UseStoreOpenWith,
Image = AppImage.MicrosoftStore
}
};
}

View File

@@ -30,14 +30,14 @@ namespace ContextMenuManager.Controls
{
Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
DialogResult = DialogResult.OK,
Text = AppString.Indirect.Ok,
Text = AppString.Dialog.Ok,
AutoSize = true
};
protected Button btnCancel = new Button
{
Anchor = AnchorStyles.Bottom | AnchorStyles.Right,
DialogResult = DialogResult.Cancel,
Text = AppString.Indirect.Cancel,
Text = AppString.Dialog.Cancel,
AutoSize = true
};

View File

@@ -41,7 +41,7 @@ namespace ContextMenuManager.Controls
this.ScenePath = scenePath;
this.ShellPath = shellPath;
this.ShellExPath = shellExPath;
this.Text = AppString.Text.CheckCommon;
this.Text = AppString.Dialog.CheckCommon;
btnOk.Click += (sender, e) => GetSelectedItems();
LoadItems();
}

View File

@@ -18,9 +18,9 @@ namespace ContextMenuManager.Controls
/// <summary>Shell类型菜单特殊注册表项名默认名称</summary>
private static readonly Dictionary<string, string> DefaultNames
= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {
{"open", AppString.Indirect.Open }, {"edit", AppString.Indirect.Edit }, {"print", AppString.Indirect.Print },
{"find", AppString.Indirect.Find }, {"play", AppString.Indirect.Play }, {"runas", AppString.Indirect.Runas },
{"explore", AppString.Text.Explore },//"浏览" 未找到合适的本地化字符串资源
{"open", AppString.Item.Open }, {"edit", AppString.Item.Edit }, {"print", AppString.Item.Print },
{"find", AppString.Item.Find }, {"play", AppString.Item.Play }, {"runas", AppString.Item.Runas },
{"explore", AppString.Item.Explore }
};
/// <summary>菜单项目在菜单中出现的位置</summary>
@@ -133,9 +133,13 @@ namespace ContextMenuManager.Controls
{
get
{
if(Convert.ToInt32(Registry.GetValue(RegPath, "HideBasedOnVelocityId", null)) == 0x639bc8) return false;
if(Convert.ToInt32(Registry.GetValue(RegPath, "CommandFlags", 0)) % 16 >= 8) return false;
//HideBasedOnVelocityId键值不适用于Win7系统且在新版Win10为0x639bc8在低版本Win10中为0x6698a6
int value = Convert.ToInt32(Registry.GetValue(RegPath, "HideBasedOnVelocityId", 0));
if(value == 0x639bc8 || value == 0x6698a6) return false;
if(!IsSubItem)
{
//LegacyDisable和ProgrammaticAccessOnly键值不适用于子菜单
if(Registry.GetValue(RegPath, "LegacyDisable", null) != null) return false;
if(Registry.GetValue(RegPath, "ProgrammaticAccessOnly", null) != null) return false;
}
@@ -145,6 +149,7 @@ namespace ContextMenuManager.Controls
{
if(value)
{
RegistryEx.DeleteValue(RegPath, "CommandFlags");
RegistryEx.DeleteValue(RegPath, "HideBasedOnVelocityId");
RegistryEx.DeleteValue(RegPath, "LegacyDisable");
RegistryEx.DeleteValue(RegPath, "ProgrammaticAccessOnly");
@@ -152,7 +157,7 @@ namespace ContextMenuManager.Controls
else
{
if(TryProtectOpenItem) return;
Registry.SetValue(RegPath, "HideBasedOnVelocityId", 0x639bc8);
Registry.SetValue(RegPath, "CommandFlags", 8);
}
}
}
@@ -364,7 +369,7 @@ namespace ContextMenuManager.Controls
{
using(ShellSubMenuDialog dlg = new ShellSubMenuDialog())
{
dlg.Text = AppString.Text.EditSubItems.Replace("%s", this.Text);
dlg.Text = AppString.Item.EditSubItems.Replace("%s", this.Text);
dlg.Icon = ResourceIcon.GetIcon(IconPath, IconIndex);
dlg.ShowDialog(this.RegPath);
}

View File

@@ -266,12 +266,12 @@ namespace ContextMenuManager.Controls
if(Extension == null)
{
this.Image = AppImage.CustomType;
this.Text = AppString.Text.SelectExtension;
this.Text = AppString.Dialog.SelectExtension;
}
else
{
this.Image = ResourceIcon.GetExtensionIcon(Extension)?.ToBitmap() ?? AppImage.NotFound;
this.Text = $"{AppString.Text.CurrentExtension}{Extension}";
this.Text = $"{AppString.Item.CurrentExtension}{Extension}";
}
}
}

View File

@@ -24,6 +24,7 @@ namespace ContextMenuManager.Controls
using(RegistryKey root = Registry.ClassesRoot)
{
extensions.AddRange(Array.FindAll(root.GetSubKeyNames(), keyName => keyName.StartsWith(".")));
if(Environment.OSVersion.Version.Major <= 6 && Environment.OSVersion.Version.Minor <= 1) extensions.Add("Briefcase");//Win7公文包
foreach(string extension in extensions)
{
string typeName = FileExtensionDialog.GetTypeName(extension, false);

View File

@@ -82,14 +82,15 @@ namespace ContextMenuManager.Controls
"Windows.StartScan", "Windows.statusbar", "Windows.Sync", "Windows.SystemProperties", "Windows.taskbarpin",
"Windows.ToggleRecycleConfirmations", "Windows.topviewrestoredefault", "Windows.Troubleshoot", "Windows.undo",
"Windows.UpdatePrinterDriver", "Windows.v2.Powershell", "Windows.View.OptionsGallery",
"Windows.ViewRemotePrinters", "Windows.zip", "Windows.Zip.Action"
"Windows.ViewRemotePrinters", "Windows.zip", "Windows.Zip.Action", "Windows.librarypane",
"Windows.ManageDefaultPrinters", "Windows.ShareHomegroupFullAccess", "Windows.ShareHomegroupReadAccess"
};
public List<string> SelectedItemNames { get; private set; } = new List<string>();
public ShellStoreForm()
{
this.Text = AppString.Text.CheckReference;
this.Text = AppString.Dialog.CheckReference;
btnOk.Click += (sender, e) => GetSelectedItems();
LoadItems();
}

View File

@@ -193,7 +193,7 @@ namespace ContextMenuManager.Controls
private void WriteRegistry()
{
SetValue(ParentPath, "SubCommands", string.Join(";", SubKeyNames));
SetValue(ParentPath, "SubCommands", string.Join(";", SubKeyNames.ToArray()));
}
private static void MoveItem(MyListItem item, CommonMultiItemsList list, bool isUp)
@@ -270,7 +270,7 @@ namespace ContextMenuManager.Controls
public SeparatorItem(CommonMultiItemsList list)
{
this.Owner = list;
this.Text = AppString.Text.Separator;
this.Text = AppString.Item.Separator;
this.Image = AppImage.Separator;
BtnDelete = new DeleteButton(this);
BtnMoveDown = new MoveButton(this, false);
@@ -298,7 +298,7 @@ namespace ContextMenuManager.Controls
public InvalidItem(CommonMultiItemsList list, string keyName)
{
this.Owner = list;
this.Text = $"{AppString.Text.InvalidItem} {keyName}";
this.Text = $"{AppString.Item.InvalidItem} {keyName}";
this.Image = AppImage.NotFound.ToTransparent();
BtnDelete = new DeleteButton(this);
BtnMoveDown = new MoveButton(this, false);

View File

@@ -31,7 +31,7 @@ namespace ContextMenuManager.Controls
readonly Label lblInfo = new Label
{
AutoSize = true,
Text = AppString.Text.SelectSubMenuMode,
Text = AppString.Dialog.SelectSubMenuMode,
};
readonly Panel pnlTop = new Panel

View File

@@ -34,7 +34,7 @@ namespace ContextMenuManager
readonly ThirdRulesList thirdRuleList = new ThirdRulesList();
readonly AboutAppBox aboutMeBox = new AboutAppBox
{
Text = AppString.Text.AboutApp
Text = AppString.Other.AboutApp
};
readonly DonateBox donateBox = new DonateBox();
readonly LanguagesBox languagesBox = new LanguagesBox();

View File

@@ -60,12 +60,21 @@ namespace ContextMenuManager
static Program()
{
Directory.CreateDirectory(AppDataConfigDir);
if(!DateTime.TryParse(ConfigReader.GetValue("General", "LastCheckUpdateTime"), out LastCheckUpdateTime))
try
{
string time = ConfigReader.GetValue("General", "LastCheckUpdateTime");
//二进制数据时间不会受系统时间格式影响
LastCheckUpdateTime = DateTime.FromBinary(Convert.ToInt64(time));
}
catch
{
LastCheckUpdateTime = DateTime.Today.AddMonths(-2);
}
if(LastCheckUpdateTime.AddMonths(1).CompareTo(DateTime.Today) < 0)
{
Updater.CheckUpdate();
new IniFileHelper(ConfigIniPath).SetValue("General", "LastCheckUpdateTime", DateTime.Today.ToShortDateString());
string time = DateTime.Today.ToBinary().ToString();
new IniFileHelper(ConfigIniPath).SetValue("General", "LastCheckUpdateTime", time);
}
}
}

View File

@@ -64,7 +64,7 @@ Library = 所有库和库目录背景的右键菜单
New = 所有目录背景和桌面背景的右键 "新建" 的菜单项目
SendTo = 所有文件系统对象的右键 "发送到" 的菜单项目
OpenWith = 所有文件右键 "打开方式" 的菜单项目
WinX = "开始" 按钮的右键Win+X菜单项目
WinX = Win10 "开始" 按钮的右键Win+X菜单项目
LnkFile = 所有快捷方式的右键菜单
ExeFile = 所有EXE可执行文件的右键菜单
@@ -106,6 +106,48 @@ Delete = 删除此项
DeleteReference = 删除引用
CopyGuid = 复制guid
InitialData = 初始数据
Edit = 编辑
Save = 保存
[Item]
Open = 打开(&O)
Edit = 编辑(&E)
Explore = 浏览(&X)
Play = 播放(&L)
Print = 打印(&P)
Find = 搜索(&E)...
Runas = 以管理员身份运行(&A)
CustomFolder = 自定义文件夹(&F)...
MapNetworkDrive = 映射网络驱动器(&N)...
DisconnectNetworkDrive = 断开网络驱动器的连接(&C)...
RecycleBinProperties = 属性(&R)
RemovableDrive = 可移动磁盘
BuildSendtoMenu = 快速构建发送到子菜单
UseStoreOpenWith = 在Microsoft Store中查找应用
NewItem = 新建一个菜单项目
AddGuidBlockedItem = 添加GUID锁定项目
CurrentExtension = 你当前选择的文件格式为
EditSubItems = 编辑 "%s" 的子菜单项目
InvalidItem = 无效菜单项目:
Separator = ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
[Dialog]
Ok = 确认
Cancel = 取消
Browse = 浏览
Program = 程序
NewShellItem = 新建Shell类型右键菜单项目
NewSendToItem = 新建发送到子菜单项目
NewOpenWithItem = 新建打开方式菜单项目
ItemText = 菜单文本
ItemCommand = 菜单命令
SingleMenu = 一级
MultiMenu = 多级
InputGuid = 输入Guid
SelectExtension = 请选择一个文件扩展名
CheckReference = 请勾选你想要添加引用的菜单项目
CheckCommon = 请勾选你想要添加的常用菜单项目
SelectSubMenuMode = 当前多级菜单子项目数为0, 你有两个选择:\n①该多级菜单的所有子菜单项目私有,\n②该多级菜单可与其他多级菜单引用相同子项,\n请做出你的选择.
[MessageBox]
TextCannotBeEmpty = 菜单文本不能为空!
@@ -127,13 +169,13 @@ EditInitialData = 仅支持纯文本文件(如.txt、.bat),\n如需写入二进
PromptIsOpenItem = 该项为"打开"菜单,\n盲目操作可能会导致无法打开文件或文件夹,\n请确认是否继续操作(不建议)
RestartApp = 程序将会重新启动!
UpdateApp = 当前有更新, 是否前往下载?\n更新信息: 版本号
FileOrFolderNotExists = 文件或文件夹不存在!
[Tip]
RestartExplorer = 重启Explorer会使桌面闪烁片刻, 正常现象无需担心,\n或者你也可以稍后重启或注销计算机使你的操作生效
CustomFolder = 禁用此项将会同时禁用文件系统\n对象属性面板中的自定义选项卡
SendToDrive = 仅当插入可移动磁盘时有作用,\n显示该可移动磁盘的所有分区
BuildSendtoMenu = 禁用此项将加快主菜单弹出速度\n但会延缓发送到子菜单弹出速度
UseStoreOpenWith = 仅适用于Win10 Microsoft Store
InvalidItem = 无效菜单项目将导致此项以下的\n所有菜单项目不可见(建议删除)
EditSubItems = 编辑子菜单项目
AddExistingItems = 添加对现有项目的引用
@@ -141,29 +183,7 @@ AddSeparator = 添加分隔线
Separator = 项目分隔线
AddCommonItems = 添加常用菜单项目
[Text]
NewItem = 新建一个菜单项目
NewShellItem = 新建Shell类型右键菜单项目
NewSendToItem = 新建发送到子菜单项目
NewOpenWithItem = 新建打开方式菜单项目
NewGuidBlockedItem = 新建GUID锁定项目
Explore = 浏览
CustomFolder = 自定义文件夹(&F)...
BuildSendtoMenu = 快速构建发送到子菜单
UseStoreOpenWith = 在Microsoft Store中查找应用
RestartExplorer = 当前部分操作需要重启文件资源管理器生效
ItemName = 菜单名称
ItemCommand = 菜单命令
Single = 一级
Multi = 多级
SelectExtension = 请选择一个文件扩展名
CurrentExtension = 你当前选择的文件格式为
EditSubItems = 编辑 "%s" 的子菜单项目
InvalidItem = 无效菜单项目:
Separator = ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
CheckReference = 请勾选你想要添加引用的菜单项目
CheckCommon = 请勾选你想要添加的常用菜单项目
InputGuid = 输入Guid
[Other]
DictionaryDescription = 字典说明
LanguageDictionary = 程序语言
GuidInfosDictionary = GUID信息
@@ -171,9 +191,9 @@ ThridRulesDictionary = 三方规则
CommonItemsDictionary = 常用菜单
Translators = 翻译贡献者
OtherLanguages = 下载或上传其他语言文件
SelectSubMenuMode = 当前多级菜单子项目数为0, 你有两个选择:\n①该多级菜单的所有子菜单项目私有,\n②该多级菜单可与其他多级菜单引用相同子项,\n请做出你的选择.
RestartExplorer = 当前部分操作需要重启文件资源管理器生效
AboutApp = 【主要功能】\n 1.管理常见右键菜单\n 2.自定义添加右键菜单\n\n【兼容性能】\n 1.适用于Windows 64位32位系统\n 2.适配高分屏最佳缩放比为150%\n 3.依赖框架.Net Framework 4.6(Win10自带Win7须安装4.6以上版本)\n .Net Framework下载https://dotnet.microsoft.com/download/dotnet-framework/ \n\n【代码开源】\n 1.代码语言C Sharp, Winform程序\n 2.Github项目https://github.com/BluePointLilac/ContextMenuManager \n 3.Gitee项目https://gitee.com/BluePointLilac/ContextMenuManager \n 4.使用本程序的源代码请遵守MIT开源协议\n\n【联系作者】\n 1.程序由我个人独立开发,当然也要感谢萌研社 @坑晨 平时的答疑解惑,能力有限,\n 难免出现一些Bug欢迎大家反馈Bug和提出建议\n 2.个人B站ID蓝点lilac https://space.bilibili.com/34492771 (欢迎大家关注我!)\n 3.个人邮箱1617859183@qq.com\n\n【程序图标】\n 1.程序主图标来自 https://www.easyicon.net/1208132-mouse_icon.html \n 2.程序使用到的按钮图标主要来自 https://www.iconfont.cn/ \n\n【温馨提示】\n 1.每个右键管理程序禁用菜单方法可能不同, 建议不要同时使用多个右键菜单管理程序,\n 大部分程序使用简单暴力的备份-删除法, 此程序尽可能使用了系统提供的键值进行隐藏操作,\n 若之前使用过其他程序禁用菜单项,请先使用对应程序还原, 不然可能无法在此程序中看到它.\n 2.此程序不用于清理未卸载干净的程序,但可帮助你定位菜单项相关注册表和文件位置,\n 你可根据相关内容进行你的操作,如果你是一个电脑小白,建议只碰启用\禁用开关.
AboutApp = 【主要功能】\n 1.管理常见位置右键菜单\n 2.自定义添加右键菜单\n\n【兼容性能】\n 1.适用于Win7、win10兼容64位32位系统\n 2.适配高分屏最佳缩放比为150%\n\n【代码开源】\n 1.代码语言C Sharp, Winform程序\n 2.Github项目https://github.com/BluePointLilac/ContextMenuManager \n 3.Gitee项目https://gitee.com/BluePointLilac/ContextMenuManager \n 4.使用本程序的源代码请遵守MIT开源协议\n\n【联系作者】\n 1.程序由我个人独立开发,当然也要感谢萌研社 @坑晨 平时的答疑解惑,能力有限,\n 难免出现一些Bug欢迎大家反馈Bug和提出建议\n 2.个人B站ID蓝点lilac https://space.bilibili.com/34492771 (欢迎大家关注我!)\n 3.个人邮箱1617859183@qq.com\n\n【程序图标】\n 1.程序主图标来自 https://www.easyicon.net/1208132-mouse_icon.html \n 2.程序使用到的按钮图标主要来自 https://www.iconfont.cn/ \n\n【程序更新】\n 1.程序有检查更新功能,除了更新程序本身还会更新字典,下载完成后直接覆盖原文件即可\n 2.由于Github Raw被墙Gitee Raw有每月次数访问上限程序设置为每月检测一次更新\n 大家也可以自己浏览Github Releases栏或Gitee 发行版栏检查是否有更新 \n\n【温馨提示】\n 1.一些特殊菜单项可能会受到其他因素影响导致不会显示在右键菜单中,\n 但是按照程序使用的通用规则在此程序中仍会显示为启用,这是正常的现象。\n 2.每个右键管理程序禁用菜单方法可能不同, 建议不要同时使用多个右键菜单管理程序,\n 大部分程序使用简单暴力的备份-删除法, 此程序尽可能使用了系统提供的键值进行隐藏操作,\n 若之前使用过其他程序禁用菜单项,请先使用对应程序还原, 不然可能无法在此程序中看到它\n 3.此程序不用于清理未卸载干净的程序,但可帮助你定位菜单项相关注册表和文件位置,\n 你可根据相关内容进行你的操作,如果你是一个电脑小白,建议只碰启用\禁用开关
Dictionaries = 【字典说明】\n 此程序拥有几个字典文件\n 如果想为此程序添加字典可右键保存字典文件, 并按照文件内相关说明进行添加\n 右侧选项卡中为原始字典内容, 你可以切换选项卡进行查看\n\n【字典内容】\n 1.程序显示文本语言字典 (languages目录)\n 2.ShellEx菜单项GUID文本图标字典 (GuidInfosDic.ini)\n 3.第三方程序菜单内部设置字典 (ThirdRulesDic.xml)\n 4.常用菜单项目字典 (ShellCommonDic.xml)

View File

@@ -46,9 +46,8 @@ Icon=msdt.exe,0
;播放到设备
[7ad84985-87b4-4a16-be58-8b72a5b390f7]
Text=@playtomenu.dll,-101
;向左、向右旋转
[ffe2a43c-56b9-4bf5-9a79-cc6d4285608a]
Text=@*,-3028
Text=向左、向右旋转
;设置为桌面背景
[ff609cc7-d34d-4049-a1aa-2293517ffcc6]
Icon=imageres.dll,-5346
@@ -64,17 +63,15 @@ Icon=imageres.dll,-5340
[f3d06e7c-1e45-4a26-847e-f9fcdee59be0]
Text=@*,-30328
Icon=imageres.dll,-5302
;包含到库中(&I)
[3dad6c5d-2167-4cae-9914-f99e41c12cfa]
Text=@*,-34593
Text=包含到库中(&I)
Icon=imageres.dll,-1001
;固定到"开始"屏幕(&P)
[470C0EBD-5D73-4d58-9CED-E91E22E23282]
Text=@shell32.dll,-51201
Icon=imageres.dll,-5376
;固定到“开始”列表(&L)
[a2a9545d-a0c2-42b4-9708-a0b2badd77c8]
Text=@*,-51395
Text=附到「开始」菜单(&U)
Icon=imageres.dll,75
;Text=发送到(&N)
[7BA4C740-9E81-11CF-99D3-00AA004AE837]
@@ -88,9 +85,10 @@ Icon=imageres.dll,-5346
[D969A300-E7FF-11d0-A93B-00A0C90F2719]
Text=@*,-95851
Icon=imageres.dll,-5307
;加密(&Y)
[6b9228da-9c15-419e-856c-19e768a13bdc]
Text=Windows 小工具
[A470F8CF-A1E8-4f65-8335-227475AA5C46]
Text=@*,-28954
Text=加密(&Y)
Icon=imageres.dll,54
;共享
[e2bf9676-5f8f-435c-97eb-11607a5bedf7]
@@ -113,16 +111,20 @@ Text=@*,-101
[fbeb8a05-beee-4442-804e-409d6c4515e9]
Text=@*,-12560
Icon=imageres.dll,25
[59099400-57ff-11ce-bd94-0020af85b590]
Text=复制磁盘(&Y)...
;便携设备菜单
[D6791A63-E7E2-4fee-BF52-5DED8E86E9B8]
Text=@*,-511
;在导航窗格中显示
[0af96ede-aebf-41ed-a1c8-cf7a685505b6]
Text=@*,-34618
Text=不在导航窗格中显示
Icon=imageres.dll,-5359
;还原以前的版本(&V)
[596AB062-B4D2-4215-9F74-E9109B0A8153]
Text=@*,-1037
;公文包
[85bbd920-42a0-1069-a2e4-08002b30309d]
Text=@shell32.dll,-22978
;复制到文件夹(&F)...
[c2fbb630-2971-11d1-a18c-00c04fd75d13]
Text=@*,-30304
@@ -145,23 +147,20 @@ Icon=nvcpl.dll,0
[e97dec16-a50d-49bb-ae24-cf682282e08d]
Text=@nv3dappshextr.dll,-109
Icon=nvcpl.dll,0
;NVIDIA 控制面板
[3D1975AF-48C6-4f8e-A182-BE0E08FA86A9]
Text=@%ProgramFiles%\NVIDIA Corporation\Control Panel Client\nvcpluir.dll,-110
Text=NVIDIA 控制面板
Icon=nvcpl.dll,0
[9B5F5829-A529-4B12-814A-E81BCB8D93FC]
Text=英特尔® 显卡设置
Icon=.\Gfxv4_0.exe,0
;使用 Microsoft Defender扫描...
[09A47860-11B0-4DA5-AFA5-26D86198A780]
Text=@shell32.dll,-50257
Text=Microsoft Defender
Icon=.\EppManifest.dll,0
;使用火绒安全进行杀毒
[18A3E590-F219-4105-9079-93DAFA51B9D6]
Text=@*,-103
;使用火绒安全粉碎文件
Text=使用火绒安全进行杀毒
[9F012318-CAA5-402C-9BF6-28EB36F61496]
Text=@*,-102
Text=使用火绒安全粉碎文件
[53D2405C-48AB-4C8A-8F59-CE0610F13BBC]
Text=通过QQ发送到
[9B6D38F3-8EF4-48A5-AD30-FFFFFFFFFFFF]

View File

@@ -1,4 +1,4 @@
[Update]
Version=1.0.0.0
Url=
Info=
Version=2.0.0.0
Url=https://github.com/BluePointLilac/ContextMenuManager/releases/download/2.0.0.0/ContextMenuManager.zip
Info=优化部分代码添加部分GUID字典\n适配Win7系统依赖框架.Net Framework 3.5Win7自带无需另外安装\nWin10版依赖框架为.Net Framework 4.6Win10自带无需安装\n可单独下载对应系统版本.exe文件或下载.zip包解压后仅保留对应系统的版本

View File

@@ -64,7 +64,7 @@ Library = 所有库和库目录背景的右键菜单
New = 所有目录背景和桌面背景的右键 "新建" 的菜单项目
SendTo = 所有文件系统对象的右键 "发送到" 的菜单项目
OpenWith = 所有文件右键 "打开方式" 的菜单项目
WinX = "开始" 按钮的右键Win+X菜单项目
WinX = Win10 "开始" 按钮的右键Win+X菜单项目
LnkFile = 所有快捷方式的右键菜单
ExeFile = 所有EXE可执行文件的右键菜单
@@ -106,6 +106,48 @@ Delete = 删除此项
DeleteReference = 删除引用
CopyGuid = 复制guid
InitialData = 初始数据
Edit = 编辑
Save = 保存
[Item]
Open = 打开(&O)
Edit = 编辑(&E)
Explore = 浏览(&X)
Play = 播放(&L)
Print = 打印(&P)
Find = 搜索(&E)...
Runas = 以管理员身份运行(&A)
CustomFolder = 自定义文件夹(&F)...
MapNetworkDrive = 映射网络驱动器(&N)...
DisconnectNetworkDrive = 断开网络驱动器的连接(&C)...
RecycleBinProperties = 属性(&R)
RemovableDrive = 可移动磁盘
BuildSendtoMenu = 快速构建发送到子菜单
UseStoreOpenWith = 在Microsoft Store中查找应用
NewItem = 新建一个菜单项目
AddGuidBlockedItem = 添加GUID锁定项目
CurrentExtension = 你当前选择的文件格式为
EditSubItems = 编辑 "%s" 的子菜单项目
InvalidItem = 无效菜单项目:
Separator = ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
[Dialog]
Ok = 确认
Cancel = 取消
Browse = 浏览
Program = 程序
NewShellItem = 新建Shell类型右键菜单项目
NewSendToItem = 新建发送到子菜单项目
NewOpenWithItem = 新建打开方式菜单项目
ItemText = 菜单文本
ItemCommand = 菜单命令
SingleMenu = 一级
MultiMenu = 多级
InputGuid = 输入Guid
SelectExtension = 请选择一个文件扩展名
CheckReference = 请勾选你想要添加引用的菜单项目
CheckCommon = 请勾选你想要添加的常用菜单项目
SelectSubMenuMode = 当前多级菜单子项目数为0, 你有两个选择:\n①该多级菜单的所有子菜单项目私有,\n②该多级菜单可与其他多级菜单引用相同子项,\n请做出你的选择.
[MessageBox]
TextCannotBeEmpty = 菜单文本不能为空!
@@ -127,13 +169,13 @@ EditInitialData = 仅支持纯文本文件(如.txt、.bat),\n如需写入二进
PromptIsOpenItem = 该项为"打开"菜单,\n盲目操作可能会导致无法打开文件或文件夹,\n请确认是否继续操作(不建议)
RestartApp = 程序将会重新启动!
UpdateApp = 当前有更新, 是否前往下载?\n更新信息: 版本号
FileOrFolderNotExists = 文件或文件夹不存在!
[Tip]
RestartExplorer = 重启Explorer会使桌面闪烁片刻, 正常现象无需担心,\n或者你也可以稍后重启或注销计算机使你的操作生效
CustomFolder = 禁用此项将会同时禁用文件系统\n对象属性面板中的自定义选项卡
SendToDrive = 仅当插入可移动磁盘时有作用,\n显示该可移动磁盘的所有分区
BuildSendtoMenu = 禁用此项将加快主菜单弹出速度\n但会延缓发送到子菜单弹出速度
UseStoreOpenWith = 仅适用于Win10 Microsoft Store
InvalidItem = 无效菜单项目将导致此项以下的\n所有菜单项目不可见(建议删除)
EditSubItems = 编辑子菜单项目
AddExistingItems = 添加对现有项目的引用
@@ -141,29 +183,7 @@ AddSeparator = 添加分隔线
Separator = 项目分隔线
AddCommonItems = 添加常用菜单项目
[Text]
NewItem = 新建一个菜单项目
NewShellItem = 新建Shell类型右键菜单项目
NewSendToItem = 新建发送到子菜单项目
NewOpenWithItem = 新建打开方式菜单项目
NewGuidBlockedItem = 新建GUID锁定项目
Explore = 浏览
CustomFolder = 自定义文件夹(&F)...
BuildSendtoMenu = 快速构建发送到子菜单
UseStoreOpenWith = 在Microsoft Store中查找应用
RestartExplorer = 当前部分操作需要重启文件资源管理器生效
ItemName = 菜单名称
ItemCommand = 菜单命令
Single = 一级
Multi = 多级
SelectExtension = 请选择一个文件扩展名
CurrentExtension = 你当前选择的文件格式为
EditSubItems = 编辑 "%s" 的子菜单项目
InvalidItem = 无效菜单项目:
Separator = ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
CheckReference = 请勾选你想要添加引用的菜单项目
CheckCommon = 请勾选你想要添加的常用菜单项目
InputGuid = 输入Guid
[Other]
DictionaryDescription = 字典说明
LanguageDictionary = 程序语言
GuidInfosDictionary = GUID信息
@@ -171,9 +191,9 @@ ThridRulesDictionary = 三方规则
CommonItemsDictionary = 常用菜单
Translators = 翻译贡献者
OtherLanguages = 下载或上传其他语言文件
SelectSubMenuMode = 当前多级菜单子项目数为0, 你有两个选择:\n①该多级菜单的所有子菜单项目私有,\n②该多级菜单可与其他多级菜单引用相同子项,\n请做出你的选择.
RestartExplorer = 当前部分操作需要重启文件资源管理器生效
AboutApp = 【主要功能】\n 1.管理常见右键菜单\n 2.自定义添加右键菜单\n\n【兼容性能】\n 1.适用于Windows 64位32位系统\n 2.适配高分屏最佳缩放比为150%\n 3.依赖框架.Net Framework 4.6(Win10自带Win7须安装4.6以上版本)\n .Net Framework下载https://dotnet.microsoft.com/download/dotnet-framework/ \n\n【代码开源】\n 1.代码语言C Sharp, Winform程序\n 2.Github项目https://github.com/BluePointLilac/ContextMenuManager \n 3.Gitee项目https://gitee.com/BluePointLilac/ContextMenuManager \n 4.使用本程序的源代码请遵守MIT开源协议\n\n【联系作者】\n 1.程序由我个人独立开发,当然也要感谢萌研社 @坑晨 平时的答疑解惑,能力有限,\n 难免出现一些Bug欢迎大家反馈Bug和提出建议\n 2.个人B站ID蓝点lilac https://space.bilibili.com/34492771 (欢迎大家关注我!)\n 3.个人邮箱1617859183@qq.com\n\n【程序图标】\n 1.程序主图标来自 https://www.easyicon.net/1208132-mouse_icon.html \n 2.程序使用到的按钮图标主要来自 https://www.iconfont.cn/ \n\n【温馨提示】\n 1.每个右键管理程序禁用菜单方法可能不同, 建议不要同时使用多个右键菜单管理程序,\n 大部分程序使用简单暴力的备份-删除法, 此程序尽可能使用了系统提供的键值进行隐藏操作,\n 若之前使用过其他程序禁用菜单项,请先使用对应程序还原, 不然可能无法在此程序中看到它.\n 2.此程序不用于清理未卸载干净的程序,但可帮助你定位菜单项相关注册表和文件位置,\n 你可根据相关内容进行你的操作,如果你是一个电脑小白,建议只碰启用\禁用开关.
AboutApp = 【主要功能】\n 1.管理常见位置右键菜单\n 2.自定义添加右键菜单\n\n【兼容性能】\n 1.适用于Win7、win10兼容64位32位系统\n 2.适配高分屏最佳缩放比为150%\n\n【代码开源】\n 1.代码语言C Sharp, Winform程序\n 2.Github项目https://github.com/BluePointLilac/ContextMenuManager \n 3.Gitee项目https://gitee.com/BluePointLilac/ContextMenuManager \n 4.使用本程序的源代码请遵守MIT开源协议\n\n【联系作者】\n 1.程序由我个人独立开发,当然也要感谢萌研社 @坑晨 平时的答疑解惑,能力有限,\n 难免出现一些Bug欢迎大家反馈Bug和提出建议\n 2.个人B站ID蓝点lilac https://space.bilibili.com/34492771 (欢迎大家关注我!)\n 3.个人邮箱1617859183@qq.com\n\n【程序图标】\n 1.程序主图标来自 https://www.easyicon.net/1208132-mouse_icon.html \n 2.程序使用到的按钮图标主要来自 https://www.iconfont.cn/ \n\n【程序更新】\n 1.程序有检查更新功能,除了更新程序本身还会更新字典,下载完成后直接覆盖原文件即可\n 2.由于Github Raw被墙Gitee Raw有每月次数访问上限程序设置为每月检测一次更新\n 大家也可以自己浏览Github Releases栏或Gitee 发行版栏检查是否有更新 \n\n【温馨提示】\n 1.一些特殊菜单项可能会受到其他因素影响导致不会显示在右键菜单中,\n 但是按照程序使用的通用规则在此程序中仍会显示为启用,这是正常的现象。\n 2.每个右键管理程序禁用菜单方法可能不同, 建议不要同时使用多个右键菜单管理程序,\n 大部分程序使用简单暴力的备份-删除法, 此程序尽可能使用了系统提供的键值进行隐藏操作,\n 若之前使用过其他程序禁用菜单项,请先使用对应程序还原, 不然可能无法在此程序中看到它\n 3.此程序不用于清理未卸载干净的程序,但可帮助你定位菜单项相关注册表和文件位置,\n 你可根据相关内容进行你的操作,如果你是一个电脑小白,建议只碰启用\禁用开关
Dictionaries = 【字典说明】\n 此程序拥有几个字典文件\n 如果想为此程序添加字典可右键保存字典文件, 并按照文件内相关说明进行添加\n 右侧选项卡中为原始字典内容, 你可以切换选项卡进行查看\n\n【字典内容】\n 1.程序显示文本语言字典 (languages目录)\n 2.ShellEx菜单项GUID文本图标字典 (GuidInfosDic.ini)\n 3.第三方程序菜单内部设置字典 (ThirdRulesDic.xml)\n 4.常用菜单项目字典 (ShellCommonDic.xml)