public bool StartPlugin(string name)
        {
            if (PluginContainers.ContainsKey(name))
            {
                if (!PluginContainers[name].Plugin.Active)
                {
                    var Plugin = PluginContainers[name].Plugin;
                    if (Plugin is IDialogPlugin)
                    {
                        IDialogPlugin plugin = Plugin as IDialogPlugin;
                        var           item   = new ToolStripMenuItem
                        {
                            Name = "ToolMenuItem_" + Plugin.PluginName,
                            Text = plugin.ToolMenuTitle,
                            Tag  = plugin
                        };
                        if (Plugin.MenuIcon != null)
                        {
                            item.Image = Plugin.MenuIcon;
                        }
                        item.Click += dialogPlugin_Click;
                        ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.Add(item);
                    }
                    if (Plugin is IDockPlugin)
                    {
                        IDockPlugin plugin      = Plugin as IDockPlugin;
                        DockContent dockContent = plugin.GetDockWindow() as DockContent;
                        dockContent.HideOnClose = true;
                        dockContent.Name        = "DockWindow_" + Plugin.PluginName;
                        var item = new ToolStripMenuItem
                        {
                            Name = "ViewMenuItem_" + Plugin.PluginName,
                            Text = plugin.ViewMenuTitle,
                            Tag  = dockContent
                        };
                        if (Plugin.MenuIcon != null)
                        {
                            item.Image = Plugin.MenuIcon;
                        }
                        item.Click += menuitem_Click;
                        ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.Add(item);

                        Main.SubForms.Add(dockContent);
                    }
                    Plugin.Active = true;
                    bool b = Plugin.StartPlugin(Main);
                    if (b)
                    {
                        Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已启动。", Plugin.PluginName, Plugin.Version));
                    }
                    else
                    {
                        Utility.Logger.Add(2, string.Format("插件 {0}({1}) 启动失败。", Plugin.PluginName, Plugin.Version));
                    }
                    return(b);
                }
            }
            return(false);
        }
        public bool AddPlugin(ElectronicPlugin Plugin)
        {
            Plugins[Plugin.PluginName] = Plugin;
            if (Plugin is IDialogPlugin)
            {
                IDialogPlugin plugin = Plugin as IDialogPlugin;
                var           item   = new ToolStripMenuItem
                {
                    Name = "ToolMenuItem_" + Plugin.PluginName,
                    Text = plugin.ToolMenuTitle,
                    Tag  = plugin
                };
                if (Plugin.MenuIcon != null)
                {
                    item.Image = Plugin.MenuIcon;
                }
                item.Click += dialogPlugin_Click;
                ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.Add(item);
            }
            if (Plugin is IDockPlugin)
            {
                IDockPlugin plugin      = Plugin as IDockPlugin;
                DockContent dockContent = plugin.GetDockWindow() as DockContent;
                dockContent.HideOnClose = true;
                dockContent.Name        = "DockWindow_" + Plugin.PluginName;
                var item = new ToolStripMenuItem
                {
                    Name = "ViewMenuItem_" + Plugin.PluginName,
                    Text = plugin.ViewMenuTitle,
                    Tag  = dockContent
                };
                if (Plugin.MenuIcon != null)
                {
                    item.Image = Plugin.MenuIcon;
                }
                item.Click += menuitem_Click;
                ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.Add(item);

                Main.SubForms.Add(dockContent);
            }
            bool b = Plugin.StartPlugin(Main);

            if (b)
            {
                Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已加载。", Plugin.PluginName, Plugin.Version));
            }
            else
            {
                Utility.Logger.Add(2, string.Format("插件 {0}({1}) 加载失败。", Plugin.PluginName, Plugin.Version));
            }
            return(b);
        }
        public bool StopPlugin(string name)
        {
            if (PluginContainers.ContainsKey(name))
            {
                if (PluginContainers[name].Plugin.Active)
                {
                    var Plugin = PluginContainers[name].Plugin;
                    if (Plugin is IDialogPlugin)
                    {
                        IDialogPlugin plugin = Plugin as IDialogPlugin;

                        string ItemName = "ToolMenuItem_" + Plugin.PluginName;
                        ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.RemoveByKey(ItemName);
                    }
                    if (Plugin is IDockPlugin)
                    {
                        IDockPlugin plugin = Plugin as IDockPlugin;

                        string ItemName = "ViewMenuItem_" + Plugin.PluginName;
                        ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.RemoveByKey(ItemName);
                        Main.SubForms.ForEach(e => { if (e.Name == "DockWindow_" + Plugin.PluginName)
                                                     {
                                                         e.Close();
                                                     }
                                              });
                        Main.SubForms.RemoveAll(e => e.Name == "DockWindow_" + Plugin.PluginName);
                    }
                    Plugin.Active = false;
                    bool b = Plugin.StopPlugin();
                    if (b)
                    {
                        Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已停止。", Plugin.PluginName, Plugin.Version));
                    }
                    else
                    {
                        Utility.Logger.Add(2, string.Format("插件 {0}({1}) 停止失败。", Plugin.PluginName, Plugin.Version));
                    }
                    return(b);
                }
            }
            return(false);
        }