OSDN Git Service

nvdaHelperRemote: It seems that in Windows 8, tsf and wm_inputLangChange have a somew...
authorMichael Curran <mick@kulgan.net>
Tue, 23 Oct 2012 04:25:26 +0000 (14:25 +1000)
committerMichael Curran <mick@kulgan.net>
Tue, 23 Oct 2012 04:25:26 +0000 (14:25 +1000)
nvdaHelper/remote/inputLangChange.cpp

index f7a7796..a842baa 100755 (executable)
@@ -20,12 +20,14 @@ http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 #include "tsf.h"\r
 #include "inputLangChange.h"\r
 \r
+bool isWin8=false;\r
+\r
 LPARAM lastInputLangChange=0;\r
 \r
 LRESULT CALLBACK inputLangChange_callWndProcHook(int code, WPARAM wParam, LPARAM lParam) {\r
        CWPSTRUCT* pcwp=(CWPSTRUCT*)lParam;\r
        if((pcwp->message==WM_INPUTLANGCHANGE)&&(pcwp->lParam!=lastInputLangChange)) {\r
-               if(!isTSFThread(false)) {\r
+               if(!isTSFThread(isWin8)) {\r
                        wchar_t buf[KL_NAMELENGTH];\r
                        GetKeyboardLayoutName(buf);\r
                        nvdaControllerInternal_inputLangChangeNotify(GetCurrentThreadId(),static_cast<unsigned long>(pcwp->lParam),buf);\r
@@ -41,6 +43,10 @@ LRESULT CALLBACK inputLangChange_callWndProcHook(int code, WPARAM wParam, LPARAM
 }\r
 \r
 void inputLangChange_inProcess_initialize() {\r
+       WORD version=LOWORD(GetVersion());\r
+       if(LOBYTE(version)>6||(LOBYTE(version)==6&&HIBYTE(version)>=2)) {\r
+               isWin8=true;\r
+       }\r
        registerWindowsHook(WH_CALLWNDPROC,inputLangChange_callWndProcHook);\r
 }\r
 \r