{\r
if (TLS::GetTSFHandler())\r
return;\r
- HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);\r
- if (FAILED(hr)) {\r
- DebugLog("CoInitializeEx failed.");\r
- return;\r
- }\r
- if (hr == S_FALSE)\r
- CoUninitialize();\r
ITfThreadMgr *thread;\r
- if (FAILED(CoCreateInstance(CLSID_TF_ThreadMgr, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&thread)))) {\r
+ HRESULT hr = CoCreateInstance(CLSID_TF_ThreadMgr, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&thread));\r
+ if (hr == CO_E_NOTINITIALIZED) {\r
+ hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);\r
+ if (FAILED(hr)) {\r
+ DebugLog("CoInitializeEx failed.");\r
+ return;\r
+ }\r
+ if (hr == S_FALSE)\r
+ CoUninitialize();\r
+ hr = CoCreateInstance(CLSID_TF_ThreadMgr, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&thread));\r
+ }\r
+ if (FAILED(hr)) {\r
DebugLog("CoCreateInstance for ThreadMgr failed.");\r
return;\r
}\r
LRESULT CALLBACK CXkeymacsDll::CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)\r
{\r
SetKeyboardHook();\r
- TSFHandler::InitSink();\r
if (nCode >= 0) {\r
const CWPSTRUCT *cwps = reinterpret_cast<CWPSTRUCT *>(lParam);\r
switch (cwps->message) {\r
void CXkeymacsDll::InitKeyboardProc()\r
{\r
AppName::Init();\r
+ TSFHandler::InitSink();\r
if (m_CurrentConfig == NULL ||\r
_tcsnicmp(m_CurrentConfig->AppName, AppName::GetAppName(), 0xF) || // PROCESSENTRY32 has only 0xF bytes of Name\r
!CUtils::IsMatchWindowText(m_CurrentConfig->WindowText)) {\r