pthotkey.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 235 行
C
235 行
/*__________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: PThotkey.c,v 1.12 2002/10/22 15:26:35 pbj Exp $
__________________________________________________________________________*/
#include "pgpPFLConfig.h"
#include "precomp.h"
#include "pgpWin32IPC.h"
#include "PGPclientlib.h"
#include "PThotkey.h"
#include "pgpUtilities.h"
#include "pgpClientPrefs.h"
static PGPHotKeys s_hotkeys;
static VOID
sRemoveHotKeys (HWND hwnd)
{
memset (&s_hotkeys, 0, sizeof(s_hotkeys));
UnregisterHotKey (hwnd, kPurgePassphraseCache);
UnregisterHotKey (hwnd, kEncryptCurrentWindow);
UnregisterHotKey (hwnd, kSignCurrentWindow);
UnregisterHotKey (hwnd, kEncryptSignCurrentWindow);
UnregisterHotKey (hwnd, kDecryptCurrentWindow);
UnregisterHotKey (hwnd, kUnmountPGPDisks);
}
static BOOL
sSetSingleHotKey (
HWND hwnd,
UINT uID,
PGPUInt32 uKey)
{
if (uKey & kPGPHotKeyEnabled)
{
UINT uMod = 0;
if (uKey & kPGPHotKeyAltModifier)
uMod |= MOD_ALT;
if (uKey & kPGPHotKeyCtrlModifier)
uMod |= MOD_CONTROL;
if (uKey & kPGPHotKeyShiftModifier)
uMod |= MOD_SHIFT;
return RegisterHotKey (hwnd, uID, uMod, (uKey & 0xFF));
}
else
return TRUE;
}
static VOID
sSetHotKeys (
HWND hwnd,
PGPContextRef context,
PGPPrefRef prefref)
{
PGPInt32 ids = 0;
PGPHotKeys* phks;
PGPSize size;
PGPError err;
memcpy (&s_hotkeys, &sDefaultHotKeys, sizeof(s_hotkeys));
err = PGPGetPrefData (prefref, kPGPPrefHotKeyData, &size, &phks);
if (IsntPGPError (err))
{
if (size == sizeof (s_hotkeys))
memcpy (&s_hotkeys, phks, size);
PGPFreeData(phks);
}
if (!sSetSingleHotKey (hwnd, kPurgePassphraseCache,
s_hotkeys.hotkeyPurgePassphraseCache))
{
s_hotkeys.hotkeyPurgePassphraseCache &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETPURGEHOTKEY;
goto done;
}
if (!sSetSingleHotKey (hwnd, kEncryptCurrentWindow,
s_hotkeys.hotkeyEncrypt))
{
s_hotkeys.hotkeyEncrypt &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETENCRYPTHOTKEY;
goto done;
}
if (!sSetSingleHotKey (hwnd, kSignCurrentWindow,
s_hotkeys.hotkeySign))
{
s_hotkeys.hotkeySign &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETSIGNHOTKEY;
goto done;
}
if (!sSetSingleHotKey (hwnd, kEncryptSignCurrentWindow,
s_hotkeys.hotkeyEncryptSign))
{
s_hotkeys.hotkeyEncryptSign &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETENCRYPTSIGNHOTKEY;
goto done;
}
if (!sSetSingleHotKey (hwnd, kDecryptCurrentWindow,
s_hotkeys.hotkeyDecrypt))
{
s_hotkeys.hotkeyDecrypt &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETDECRYPTHOTKEY;
goto done;
}
if (!sSetSingleHotKey (hwnd, kUnmountPGPDisks,
s_hotkeys.hotkeyDiskUnmount))
{
s_hotkeys.hotkeyDiskUnmount &= ~kPGPHotKeyEnabled;
ids = IDS_CANNOTSETUNMOUNTHOTKEY;
goto done;
}
done:
if (ids)
{
PGPSetPrefData (
prefref, kPGPPrefHotKeyData, sizeof(s_hotkeys), &s_hotkeys);
PGPclFlushClientLibPrefs (prefref, NULL);
PTMessageBox (hwnd, IDS_CAPTION, ids, MB_ICONEXCLAMATION|MB_OK);
PGPclPreferences (context, hwnd, kPGPclHotkeyPrefs, NULL);
}
}
VOID
PTHotKeyInit (void)
{
memset (&s_hotkeys, 0, sizeof(s_hotkeys));
}
PGPHotKeys*
PTGetHotKeyStruct (void)
{
return (&s_hotkeys);
}
VOID
PTHandleHotKeyPrefsChange (
HWND hwnd,
PGPContextRef context,
PGPPrefRef prefref)
{
sRemoveHotKeys (hwnd);
sSetHotKeys (hwnd, context, prefref);
}
VOID
PTCheckForHotKeyMsg (
HWND hwnd,
PGPContextRef context,
UINT msg)
{
if (msg == PGPTRAY_M_DISABLEHOTKEYS)
{
sRemoveHotKeys (hwnd);
}
if (msg == PGPTRAY_M_ENABLEHOTKEYS)
{
PGPError err;
PGPPrefRef prefref;
err=PGPclPeekClientLibPrefRefs(&prefref,NULL);
if(IsntPGPError(err))
{
sSetHotKeys (hwnd, context, prefref);
}
}
}
VOID
PTProcessHotKey (
HWND hwnd,
PGPContextRef context,
WPARAM wParam)
{
switch (wParam) {
case kPurgePassphraseCache :
PGPPurgePassphraseCache (context);
PGPPurgeKeyDBCache (context);
break;
case kEncryptCurrentWindow :
SendMessage (hwnd, WM_COMMAND, ID_ENCRYPTWINDOW, 0);
break;
case kSignCurrentWindow :
SendMessage (hwnd, WM_COMMAND, ID_SIGNWINDOW, 0);
break;
case kEncryptSignCurrentWindow :
SendMessage (hwnd, WM_COMMAND, ID_ENCRYPTSIGNWINDOW, 0);
break;
case kDecryptCurrentWindow :
SendMessage (hwnd, WM_COMMAND, ID_DECRYPTVERIFYWINDOW, 0);
break;
case kUnmountPGPDisks :
SendMessage (hwnd, WM_COMMAND, ID_PGPDISKUNMOUNTALL, 0);
break;
}
}
VOID
PTRemoveHotKeys (
HWND hwnd)
{
sRemoveHotKeys (hwnd);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?