m_bEnableKeyboardHook = true;\r
}\r
\r
-void CXkeymacsDll::SetKeyboardHook()\r
+void CXkeymacsDll::SetKeyboardHook(DWORD threadId)\r
{\r
LPVOID lpData = TlsGetValue(g_TlsIndex);\r
if (!lpData) {\r
}\r
HHOOK *phHook = reinterpret_cast<HHOOK *>(lpData);\r
if (!*phHook)\r
- *phHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, g_hDllInst, GetCurrentThreadId());\r
+ *phHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hDllInst, threadId ? threadId : GetCurrentThreadId());\r
}\r
\r
inline void unhook(HHOOK &hh)\r
LRESULT CALLBACK CXkeymacsDll::ShellProc(int nCode, WPARAM wParam, LPARAM lParam)\r
{\r
if (nCode == HSHELL_WINDOWACTIVATED) {\r
- TCHAR className[256];\r
- GetClassName((HWND)wParam, className, 255);\r
+ SetKeyboardHook(GetWindowThreadProcessId(reinterpret_cast<HWND>(wParam), NULL));\r
+ TCHAR className[CLASS_NAME_LENGTH];\r
+ GetClassName(reinterpret_cast<HWND>(wParam), className, CLASS_NAME_LENGTH);\r
if (!_tcsicmp(className, _T("ConsoleWindowClass"))) {\r
InitKeyboardProc(FALSE);\r
ShowKeyboardHookState();\r
static BOOL LoadConfig();\r
static void SetConfig(const Config& config);\r
static void SetHooks();\r
- static void SetKeyboardHook();\r
+ static void SetKeyboardHook(DWORD threadId = 0);\r
static void ResetHooks();\r
static void ReleaseHooks();\r
static void ReleaseKeyboardHook();\r