123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "CKeyBoardHook.h"
- #include "CAppInfo.h"
- #include "logproc.h"
- CKeyBoardHook *CKeyBoardHook::m_pThis;
- std::shared_ptr<CKeyBoardHook> g_keyBoardHookPtr = nullptr;
- CKeyBoardHook::CKeyBoardHook()
- {
- h_module = nullptr;
- g_hProcess = nullptr;
- g_HotKey = nullptr;
- m_pThis = this;
- }
- CKeyBoardHook::~CKeyBoardHook()
- {
- if(g_HotKey != nullptr)
- {
- Hotkey_UnInstall();
- }
- }
- bool CKeyBoardHook::Hotkey_Install(DWORD ThreadID)
- {
- g_HotKey = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)Hotkey_Filter,
- GetModuleHandleA("client.exe"), ThreadID);
- if (nullptr == g_HotKey)
- {
- myDebug()<<QString::fromLocal8Bit("安装钩子出错 !");
- return false;
- }
- return true;
- }
- bool CKeyBoardHook::Hotkey_UnInstall()
- {
- UnhookWindowsHookEx(g_HotKey);
- g_HotKey = nullptr;
- return true;
- }
- LRESULT CALLBACK CKeyBoardHook::Hotkey_Filter(int nCode, WPARAM wParam, LPARAM lParam)
- {
- KBDLLHOOKSTRUCT *Key_Info = (KBDLLHOOKSTRUCT *) lParam;
- if (HC_ACTION == nCode)
- {
- bool bCtrlKeyDown =
- GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
- bool bwinKeyDown =
- GetAsyncKeyState(VK_LWIN)>>((sizeof(SHORT) * 8) - 1);
- if (WM_KEYDOWN == wParam || wParam == WM_SYSKEYDOWN)
- {
- if(g_appInfoPtr->m_bFullScreenTop)
- {
- if (Key_Info->vkCode == VK_RWIN || Key_Info->vkCode == VK_LWIN)
- {
- return 1;
- }
- if (Key_Info->vkCode == 0x4D && ((GetKeyState(VK_LWIN) & 0x8000) ||
- (GetKeyState(VK_RWIN) & 0x8000)))
- {
- return 1;
- }
- if (Key_Info->vkCode == 0x44 && ((GetKeyState(VK_RWIN) & 0x8000) ||
- (GetKeyState(VK_LWIN) & 0x8000)))
- {
- return 1;
- }
- if (Key_Info->vkCode == 0x4C && ((GetKeyState(VK_RWIN) & 0x8000) ||
- (GetKeyState(VK_LWIN) & 0x8000)))
- {
- return 1;
- }
- if (Key_Info->vkCode==VK_ESCAPE && bCtrlKeyDown)
-
- {
- return 1;
- }
- if (Key_Info->vkCode == VK_F4 && Key_Info->flags & LLKHF_ALTDOWN)
-
- {
- return 1;
- }
- if (Key_Info->vkCode == VK_LMENU || Key_Info->vkCode == VK_RMENU)
- {
- return 1;
- }
- if (Key_Info->vkCode == VK_TAB && (Key_Info->flags & LLKHF_ALTDOWN))
-
- {
- return 1;
- }
- if (Key_Info->vkCode == VK_ESCAPE && (Key_Info->flags & LLKHF_ALTDOWN))
-
- {
- return 1;
- }
- if (Key_Info->vkCode == VK_ESCAPE)
-
- {
- return 1;
- }
- if(bCtrlKeyDown && (Key_Info->vkCode == 0x58 ||
- Key_Info->vkCode == 0x56 ||
- Key_Info->vkCode == 0x43))
- {
- return 1;
- }
- }
- if ((Key_Info->vkCode == VK_F11) && bCtrlKeyDown
- )
- {
- {
- }
- return true;
- }
- }
- }
- return CallNextHookEx(m_pThis->g_HotKey, nCode, wParam, lParam);
- }
|