43#define IsWindowHotKey(pHK) ( (pHK)->pti == NULL && (pHK)->id == IDHK_WNDKEY )
57 TRACE(
"Start up the debugger hotkeys!! If you see this you enabled debugprints. Congrats!\n");
112 phkNext = pHotKey->
pNext;
115 if (pHotKey->
pWnd == pWnd)
122 pLink = &pHotKey->
pNext;
142 phkNext = pHotKey->
pNext;
145 if (pHotKey->
pti == pti)
152 pLink = &pHotKey->
pNext;
179 pHotKey = pHotKey->
pNext;
219 pHotKey =
IsHotKey(fModifiers, wVk);
241 TRACE(
"Hot key pressed (pWnd %p, id %d)\n", pHotKey->
pWnd, pHotKey->
id);
261 TRACE(
"System Hot key Id %d Key %u\n", pHotKey->
id, wVk );
283 TRACE(
"UPTM Hot key Id %d Key %u\n", pHotKey->
id, wVk );
290 pWnd = pHotKey->
pWnd;
320 TRACE(
"UPM Hot key Id %d Key %u\n", pHotKey->
id, wVk );
342 WARN(
"DefWndGetHotKey\n");
353 pHotKey = pHotKey->
pNext;
372 WARN(
"DefWndSetHotKey wParam 0x%x\n",
wParam);
393 if (pHotKey->
pWnd != pWnd)
399 pHotKey = pHotKey->
pNext;
414 pLink = &pHotKey->
pNext;
415 pHotKey = pHotKey->
pNext;
427 pHotKey->
pWnd = pWnd;
442 *pLink = pHotKey->
pNext;
466 pHotKeyThread = pWnd->
head.pti;
473 WARN(
"Hotkey already exists\n");
485 pHotKey->
pti = pHotKeyThread;
486 pHotKey->
pWnd = pWnd;
507 phkNext = pHotKey->
pNext;
510 if (pHotKey->
pWnd == pWnd && pHotKey->
id ==
id)
519 pLink = &pHotKey->
pNext;
542 TRACE(
"Enter NtUserRegisterHotKey\n");
546 WARN(
"Invalid modifiers: %x\n", fsModifiers);
564 pHotKeyThread = pWnd->
head.pti;
570 WARN(
"Must be from the same Thread.\n");
579 WARN(
"Hotkey already exists\n");
591 pHotKey->
pti = pHotKeyThread;
592 pHotKey->
pWnd = pWnd;
604 TRACE(
"Leave NtUserRegisterHotKey, ret=%i\n", bRet);
617 TRACE(
"Enter NtUserUnregisterHotKey\n");
627 phkNext = pHotKey->
pNext;
630 if (pHotKey->
pWnd == pWnd && pHotKey->
id ==
id)
639 pLink = &pHotKey->
pNext;
646 TRACE(
"Leave NtUserUnregisterHotKey, ret=%i\n", bRet);
#define DBG_DEFAULT_CHANNEL(ch)
#define ERROR_NOT_ENOUGH_MEMORY
#define ValidateHwndNoErr(hwnd)
static void cleanup(void)
#define ExAllocatePoolWithTag(hernya, size, tag)
PUSER_MESSAGE_QUEUE gpqForeground
HWND FASTCALL UserGetForegroundWindow(VOID)
#define UserHMGetHandle(obj)
#define ExFreePoolWithTag(_P, _T)
#define ENHANCED_KEYBOARD(Id)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
PWINSTATION_OBJECT InputWindowStation
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
KEYBOARD_ID KeyboardIdentifier
PWND FASTCALL UserGetWindowObject(HWND hWnd)
VOID co_IntShellHookNotify(WPARAM Message, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY NtUserUnregisterHotKey(HWND hWnd, int id)
BOOL FASTCALL UserRegisterHotKey(PWND pWnd, int id, UINT fsModifiers, UINT vk)
static PHOT_KEY FASTCALL IsHotKey(UINT fsModifiers, WORD wVk)
BOOL NTAPI co_UserProcessHotKeys(WORD wVk, BOOL bIsDown)
BOOL APIENTRY NtUserRegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk)
VOID FASTCALL StartDebugHotKeys(VOID)
UINT FASTCALL DefWndGetHotKey(PWND pWnd)
VOID FASTCALL UnregisterThreadHotKeys(PTHREADINFO pti)
static UCHAR IntSwapModHKF(UINT Input)
#define IsWindowHotKey(pHK)
static UINT FASTCALL IntGetModifiers(PBYTE pKeyState)
VOID FASTCALL UnregisterWindowHotKeys(PWND pWnd)
INT FASTCALL DefWndSetHotKey(PWND pWnd, WPARAM wParam)
BOOL FASTCALL UserUnregisterHotKey(PWND pWnd, int id)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL FASTCALL UserPostThreadMessage(PTHREADINFO pti, UINT Msg, WPARAM wParam, LPARAM lParam)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define ERROR_WINDOW_OF_OTHER_THREAD
#define ERROR_HOTKEY_ALREADY_REGISTERED
#define ERROR_INVALID_FLAGS