예제 #1
0
        /// <summary>
        /// Removes all ressources such as menus, handles and forms from KeePass.
        /// </summary>
        public override void Terminate()
        {
            //Destroy Help Form.
            if (HelpForm.Visible)
            {
                HelpForm.Close();
            }
            else
            {
                HelpForm.Dispose();
            }

            //Unregister internal events.
            m_host.MainWindow.Shown -= MainWindow_Shown;

            //Remove Tools Menus.
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toMenuTrayTotp);
            toMenuTrayTotp.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuSettings);
            toSubMenuSettings.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuSeperator1);
            toSubMenuSeperator1.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuAbout);
            toSubMenuAbout.Dispose();

            //Remove Notify Icon menus.
            m_host.MainWindow.MainNotifyIcon.ContextMenuStrip.Opening -= OnNotifyMenuOpening;
            m_host.MainWindow.MainNotifyIcon.ContextMenuStrip.Items.Remove(niMenuTitle);
            niMenuTitle.Dispose();
            foreach (var Menu in niMenuList)
            {
                m_host.MainWindow.MainNotifyIcon.ContextMenuStrip.Items.Remove(Menu);
                Menu.Dispose();
            }
            m_host.MainWindow.MainNotifyIcon.ContextMenuStrip.Items.Remove(niMenuSeperator);
            niMenuSeperator.Dispose();

            //Remove Context menus.
            m_host.MainWindow.EntryContextMenu.Opening -= OnEntryMenuOpening;
            m_host.MainWindow.EntryContextMenu.Items.Remove(enMenuCopyTotp);
            enMenuCopyTotp.Dispose();

            //Unregister auto-type function.
            if (SprEngine.FilterPlaceholderHints.Contains(m_host.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets()))
            {
                SprEngine.FilterCompile -= SprEngine_FilterCompile;
                SprEngine.FilterPlaceholderHints.Remove(m_host.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets());
            }

            //Remove Column provider.
            m_host.ColumnProviderPool.Remove(liColumnTotp);
            liColumnTotp = null;

            //Remove Timer.
            liRefreshTimer.Elapsed -= OnTimerTick;
            liRefreshTimer.Dispose();
        }