📄 pwsafedlg.h
字号:
/*
KeePass Password Safe - The Open-Source Password Manager
Copyright (C) 2003-2007 Dominik Reichl <dominik.reichl@t-online.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#if !defined(AFX_PWSAFEDLG_H__206CC2C3_063D_11D8_BF16_0050BF14F5CC__INCLUDED_)
#define AFX_PWSAFEDLG_H__206CC2C3_063D_11D8_BF16_0050BF14F5CC__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "../KeePassLibCpp/PwManager.h"
#include "../KeePassLibCpp/DataExchange/PwExport.h"
#include "../KeePassLibCpp/PasswordGenerator/PasswordGenerator.h"
#include "NewGUI/NewGUICommon.h"
#include "NewGUI/KCWndUtil.h"
#include "NewGUI/KCSideBannerWnd.h"
#include "NewGUI/BCMenu.h"
#include "NewGUI/XPStyleButtonST.h"
#include "NewGUI/ThemeHelperST.h"
#include "NewGUI/CustomListCtrlEx.h"
#include "NewGUI/CustomTreeCtrlEx.h"
#include "NewGUI/SystemTray.h"
#include "NewGUI/SystemTrayEx.h"
#include "NewGUI/AutoRichEditCtrlFx.h"
#include "Plugins/PluginMgr.h"
#include "Util/PrivateConfigEx.h"
#include "Util/SInstance.h"
#include "Util/SessionNotify.h"
#include "Util/RemoteControl.h"
#include "../KeePassLibCpp/SysDefEx.h"
#define _CALLPLUGINS(__c,__l,__w) CPluginManager::Instance().CallPlugins((__c),(__l),(__w))
#define GUI_GROUPLIST_EXT 170
// Standard Windows Dialog GUI_SPACER = 11
#define GUI_SPACER 4
#define APPWND_TIMER_ID 1
#define APPWND_TIMER_ID_UPDATER 2
#define ICOIDX_REMOVABLE 16
#define ICOIDX_FIXED 17
#define ICOIDX_REMOTE 18
#define ICOIDX_CDROM 19
#define ICOIDX_RAMDISK 20
#define ICOIDX_NODRIVE 21
// #define PWS_DEFAULT_SPLITTER_Y 270
#define PWS_DEFAULT_SPLITTER_Y 10
#define MENU_EXTRAS_ITEMCOUNT 8
#define PWS_NEW_ATTACHMENT _T(":: ")
#define WM_PLUGINS_FIRST (0x9FFF)
#define WM_PLUGINS_LAST (0xAFFF)
#define HOTKEYID_AUTOTYPE 33
#define HOTKEYID_RESTORE 34
#define CM_TIMED 0
#define CM_ENHSECURE 1
// Show expired / soon-to-expire entries at database open, flags
#define AUTOEXPIRE_NOSHOW 0
#define AUTOEXPIRE_EXPIRED 1
#define AUTOEXPIRE_SOONTO 2
// Auto-type methods
#define ATM_DROPBACK 0
#define ATM_MINIMIZE 1
#define LVSX_CHANGING DWORD_MAX
#define KPCM_NULL 0
#define KPCM_EXIT 1
#define MWS_MIN_CX 314
#define MWS_MIN_CY 207
/////////////////////////////////////////////////////////////////////////////
class CPwSafeDlg : public CDialog
{
public:
CPwSafeDlg(CWnd* pParent = NULL);
void OnUpdateFlush(CMenu *pMenu); // BCMenu function
static void _TranslateMenu(BCMenu *pBCMenu, BOOL bAppendSuffix, BOOL *pFlags);
static const TCHAR *_GetCmdAccelExt(const TCHAR *psz);
void RestartApplication();
static CString _GetSecureEditTipText(const TCHAR *tszBase);
void RebuildContextMenus();
void DeleteContextMenus();
void _SetDefaultFocus();
void ProcessResize();
void CleanUp();
void SaveOptions();
void _SaveWindowPositionAndSize(CPrivateConfigEx* pcfg);
void SetStatusTextEx(LPCTSTR lpStatusText, int nPane = -1);
inline void NotifyUserActivity();
void UpdateAutoSortMenuItems();
void BuildPluginMenu();
BOOL RegisterGlobalHotKey(int nHotKeyID, DWORD dwHotKey, BOOL bReleasePrevious, BOOL bMessageBoxOnFail);
void AdjustPwListMode();
void AdjustColumnWidths();
void ParseAndOpenURLWithEntryInfo(LPCTSTR lpURL, PW_ENTRY *pEntry);
void _AutoType(PW_ENTRY *pEntry, BOOL bLoseFocus, DWORD dwAutoTypeSeq);
void UpdateGroupList();
void UpdatePasswordList();
void RefreshPasswordList(); // Refresh entries by UUID
DWORD GetSelectedEntry();
DWORD GetSelectedEntriesCount();
DWORD GetSelectedGroupId();
BOOL GetExportOptions(PWEXPORT_OPTIONS *pOptions, CPwExport *pPwExport);
CString GetExportFile(int nFormat, LPCTSTR lpBaseFileName, BOOL bFixFileName);
void ExportSelectedGroup(int nFormat);
void ExportGroupToKeePass(DWORD dwGroupId);
CString _MakeRtfString(LPCTSTR lptString);
void ShowEntryDetails(PW_ENTRY *p);
HTREEITEM _GetLastGroupItem(CTreeCtrl *pTree);
void GroupSyncStates(BOOL bGuiToMgr = TRUE);
HTREEITEM _GroupIdToHTreeItem(DWORD_PTR dwGroupId);
void _ProcessGroupKey(UINT nChar, UINT nFlags);
void _ProcessListKey(UINT nChar, BOOL bAlt);
void CB_OnPwlistColumnWidthChange(int iColumn, int iSize);
void _SortListIfAutoSort();
void _HandleEntryDrop(DWORD dwDropType, HTREEITEM hTreeItem);
void _List_SaveView() { m_nSaveView = m_cList.GetTopIndex(); }
void _List_RestoreView() // Restore the previous password list view
{
int nItemCount = m_cList.GetItemCount();
if(nItemCount <= 0) return;
m_cList.EnsureVisible(nItemCount - 1, FALSE);
if(m_nSaveView < nItemCount)
m_cList.EnsureVisible(m_nSaveView, FALSE);
}
void _Groups_SaveView(BOOL bSaveSelection = TRUE)
{
HTREEITEM hTop = m_cGroups.GetFirstVisibleItem();
if(hTop != NULL) m_dwGroupsSaveFirstVisible = m_cGroups.GetItemData(hTop);
else m_dwGroupsSaveFirstVisible = DWORD_MAX;
m_dwGroupsSaveSelected = DWORD_MAX;
if(bSaveSelection == TRUE)
{
HTREEITEM h = m_cGroups.GetSelectedItem();
if(h != NULL) m_dwGroupsSaveSelected = m_cGroups.GetItemData(h);
}
}
void _Groups_RestoreView()
{
HTREEITEM h;
if(m_dwGroupsSaveFirstVisible != DWORD_MAX)
{
h = _GroupIdToHTreeItem(m_dwGroupsSaveFirstVisible);
if(h != NULL) m_cGroups.SelectSetFirstVisible(h);
}
if(m_dwGroupsSaveSelected != DWORD_MAX)
{
h = _GroupIdToHTreeItem(m_dwGroupsSaveSelected);
if(h != NULL) m_cGroups.SelectItem(h);
}
}
void _CalcColumnSizes();
void _SetColumnWidths();
void _SetListParameters();
BOOL _RemoveSearchGroup();
void _DeleteBackupEntries();
void _SelChangeView(UINT uID);
void _List_SetEntry(DWORD dwInsertPos, PW_ENTRY *pwe, BOOL bIsNewEntry, PW_TIME *ptNow);
DWORD _ListSelToEntryIndex(DWORD dwSelected = DWORD_MAX);
DWORD _EntryUuidToListPos(BYTE *pUuid);
void _DeleteTemporaryFiles();
void _UpdateToolBar(BOOL bForceUpdate = FALSE);
void _UpdateTitleBar();
void _UpdateTrayIcon();
void _UpdateGuiToManager();
void _TouchGroup(DWORD dwGroupId, BOOL bEdit);
void _TouchEntry(DWORD dwListIndex, BOOL bEdit);
void _SyncSubTree(CTreeCtrl *pTree, HTREEITEM hItem, BOOL bGuiToMgr);
void _SyncItem(CTreeCtrl *pTree, HTREEITEM hItem, BOOL bGuiToMgr);
void _SortList(DWORD dwByField, BOOL bAutoSortCall);
BOOL _CheckIfCanSort();
HTREEITEM _FindSelectInTree(CTreeCtrl *pTree, HTREEITEM hRoot, DWORD_PTR dwGroupId);
static BOOL IsUnsafeAllowed(HWND hWndParent);
void _OpenDatabase(CPwManager *pDbMgr, const TCHAR *pszFile, const TCHAR *pszPassword, const TCHAR *pszKeyFile, BOOL bOpenLocked, LPCTSTR lpPreSelectPath, BOOL bIgnoreCorrupted);
BOOL _ChangeMasterKey(CPwManager *pDbMgr, BOOL bCreateNew);
void _PrintGroup(DWORD dwGroupId);
void _Find(DWORD dwFindGroupId);
void _DoQuickFind();
void _HandleSelectAll();
void _ShowExpiredEntries(BOOL bShowIfNone, BOOL bShowExpired, BOOL bShowSoonToExpire);
BOOL _ParseCommandLine();
void _ParseSpecAndSetFont(const TCHAR *pszSpec);
void _ShowToolBar(BOOL bShow);
void _EnableViewMenuItems(BCMenu *pMenu);
void _FinishDragging(BOOL bDraggingImageList);
static UINT GetKeePassControlMessageID();
BCMenu m_menu; // Our XP-style menu
BOOL m_bMenu; // Menu created?
CImageList m_ilIcons;
BOOL m_bCheckForInstance;
CInstanceChecker m_instanceChecker;
HICON m_hTrayIconNormal;
HICON m_hTrayIconLocked;
BOOL m_bDisplayDialog;
BOOL m_bCachedToolBarUpdate;
BOOL m_bCachedPwlistUpdate;
CString m_strFile;
CString m_strFileAbsolute;
BOOL m_bFileOpen;
BOOL m_bModified;
BOOL m_bFileReadOnly;
CPwManager m_mgr;
static BOOL m_bSecureEdits;
static BOOL m_bDisableUnsafeAtStart;
static BOOL m_bUseLocalTimeFormat;
static PW_GEN_SETTINGS_EX m_pgsAutoProfile;
private:
int m_nClipboardMethod;
BOOL m_bTimer;
int m_nClipboardCountdown;
int m_nClipboardState;
int m_nFileRelockCountdown;
HWND m_hwndNextViewer;
BOOL m_bOpenLastDb;
CString m_strLastDb;
BOOL m_bImgButtons;
BOOL m_bEntryGrid;
BOOL m_bAutoSaveDb;
long m_nLockTimeDef;
long m_nLockCountdown;
BOOL m_bAutoShowExpired;
BOOL m_bAutoShowExpiredSoon;
BOOL m_bBackupEntries;
BOOL m_bSingleClickTrayIcon;
DWORD m_dwDefaultExpire;
BOOL m_bDeleteBackupsOnSave;
BOOL m_bDisableAutoType;
BOOL m_bLockOnWinLock;
BOOL m_bExiting;
BOOL m_bLocked;
long m_nLockedViewParams[3];
BOOL m_bWasMaximized;
BOOL m_bMinimized;
BOOL m_bTrayed;
BOOL m_bRestartApplication;
CSessionNotify m_sessionNotify;
BOOL m_bWindowsNewLine;
BOOL m_bPasswordStars;
BOOL m_bUserStars;
BOOL m_bDisableUnsafe;
BOOL m_bRememberLast;
BOOL m_bUsePuttyForURLs;
BOOL m_bSaveOnLATMod;
BOOL m_bStartMinimized;
BOOL m_bQuickFindIncBackup;
BOOL m_bCheckForUpdate;
CStatusBarCtrl m_sbStatus;
BOOL m_bShowToolBar;
BOOL m_bAlwaysOnTop;
BOOL m_bShowTitle;
BOOL m_bShowUserName;
BOOL m_bShowURL;
BOOL m_bShowPassword;
BOOL m_bShowNotes;
BOOL m_bShowCreation;
BOOL m_bShowLastMod;
BOOL m_bShowLastAccess;
BOOL m_bShowExpire;
BOOL m_bShowUUID;
BOOL m_bShowAttach;
BOOL m_bLockOnMinimize;
BOOL m_bMinimizeToTray;
BOOL m_bCloseMinimizes;
BOOL m_bEntryView;
BOOL m_bColAutoSize;
int m_nAutoSort;
int m_nAutoTypeMethod;
BOOL m_bShowFullPath;
BOOL m_bCopyURLs;
BOOL m_bExitInsteadOfLockAT;
CString m_strURLOverride;
BOOL m_bAllowSaveIfModifiedOnly;
BCMenu *m_pPwListMenu;
BCMenu *m_pGroupListMenu;
BCMenu *m_pEntryViewMenu;
BCMenu *m_pPwListTrackableMenu;
BCMenu *m_pGroupListTrackableMenu;
BCMenu *m_pEntryViewTrackableMenu;
BOOL m_bRestoreHotKeyRegistered;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -