diff --git a/dlls/msctf/inputprocessor.c b/dlls/msctf/inputprocessor.c index b501b47fcd5..7ece8516cec 100644 --- a/dlls/msctf/inputprocessor.c +++ b/dlls/msctf/inputprocessor.c @@ -97,8 +97,23 @@ static HRESULT WINAPI InputProcessorProfiles_Register( ITfInputProcessorProfiles *iface, REFCLSID rclsid) { InputProcessorProfiles *This = (InputProcessorProfiles*)iface; - FIXME("STUB:(%p)\n",This); - return E_NOTIMPL; + HKEY tipkey; + WCHAR buf[39]; + static const WCHAR fmt[] = {'%','s','\\','%','s',0}; + WCHAR fullkey[68]; + + TRACE("(%p) %s\n",This,debugstr_guid(rclsid)); + + StringFromGUID2(rclsid, buf, 39); + sprintfW(fullkey,fmt,szwSystemTIPKey,buf); + + if (RegCreateKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &tipkey, NULL) != ERROR_SUCCESS) + return E_FAIL; + + RegCloseKey(tipkey); + + return S_OK; } static HRESULT WINAPI InputProcessorProfiles_Unregister( diff --git a/dlls/msctf/msctf.c b/dlls/msctf/msctf.c index 224ce99e4a6..e34a9c8f696 100644 --- a/dlls/msctf/msctf.c +++ b/dlls/msctf/msctf.c @@ -45,6 +45,8 @@ static HINSTANCE MSCTF_hinstance; DWORD tlsIndex = 0; +const WCHAR szwSystemTIPKey[] = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\','C','T','F','\\','T','I','P',0}; + typedef HRESULT (*LPFNCONSTRUCTOR)(IUnknown *pUnkOuter, IUnknown **ppvOut); static const struct { diff --git a/dlls/msctf/msctf_internal.h b/dlls/msctf/msctf_internal.h index 1cb4924971f..cea172334ab 100644 --- a/dlls/msctf/msctf_internal.h +++ b/dlls/msctf/msctf_internal.h @@ -27,4 +27,5 @@ extern HRESULT DocumentMgr_Constructor(ITfDocumentMgr **ppOut); extern HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfContext **ppOut, TfEditCookie *pecTextStore); extern HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); +extern const WCHAR szwSystemTIPKey[]; #endif /* __WINE_MSCTF_I_H */