infosoft: Implement and register the language neutral wordbreaker, not the English_US one.
This commit is contained in:
parent
26985e6bec
commit
510fc118dd
|
@ -23,6 +23,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
|
@ -36,8 +37,7 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(infosoft);
|
WINE_DEFAULT_DEBUG_CHANNEL(infosoft);
|
||||||
|
|
||||||
DEFINE_GUID(CLSID_wb_en_us,
|
DEFINE_GUID(CLSID_wb_Neutral,0x369647e0,0x17b0,0x11ce,0x99,0x50,0x00,0xaa,0x00,0x4b,0xbb,0x1f);
|
||||||
0x59e09780,0x8099,0x101b,0x8d,0xf3,0x00,0x00,0x0b,0x65,0xc3,0xb5);
|
|
||||||
|
|
||||||
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern HRESULT WINAPI wb_en_us_Constructor(IUnknown*, REFIID, LPVOID *);
|
extern HRESULT WINAPI wb_Constructor(IUnknown*, REFIID, LPVOID *);
|
||||||
|
|
||||||
typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown*, REFIID, LPVOID*);
|
typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown*, REFIID, LPVOID*);
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ static const IClassFactoryVtbl infosoft_cfvt =
|
||||||
infosoftcf_fnLockServer
|
infosoftcf_fnLockServer
|
||||||
};
|
};
|
||||||
|
|
||||||
static CFImpl wb_en_us_cf = { &infosoft_cfvt, &wb_en_us_Constructor };
|
static CFImpl wb_cf = { &infosoft_cfvt, &wb_Constructor };
|
||||||
|
|
||||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||||
{
|
{
|
||||||
|
@ -133,8 +133,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
*ppv = NULL;
|
*ppv = NULL;
|
||||||
|
|
||||||
if (IsEqualIID(rclsid, &CLSID_wb_en_us))
|
if (IsEqualIID(rclsid, &CLSID_wb_Neutral))
|
||||||
pcf = (IClassFactory*) &wb_en_us_cf;
|
pcf = (IClassFactory*) &wb_cf;
|
||||||
else
|
else
|
||||||
return CLASS_E_CLASSNOTAVAILABLE;
|
return CLASS_E_CLASSNOTAVAILABLE;
|
||||||
|
|
||||||
|
@ -148,8 +148,43 @@ HRESULT WINAPI DllCanUnloadNow(void)
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI DllRegisterServer(void)
|
static HRESULT add_key_val( LPCSTR key, LPCSTR valname, LPCSTR value )
|
||||||
{
|
{
|
||||||
FIXME("\n");
|
HKEY hkey;
|
||||||
|
|
||||||
|
if (RegCreateKeyA( HKEY_CLASSES_ROOT, key, &hkey ) != ERROR_SUCCESS) return E_FAIL;
|
||||||
|
RegSetValueA( hkey, valname, REG_SZ, value, strlen( value ) + 1 );
|
||||||
|
RegCloseKey( hkey );
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT add_wordbreaker_clsid( LPCSTR lang, const CLSID *id)
|
||||||
|
{
|
||||||
|
CHAR key[100], val[50];
|
||||||
|
|
||||||
|
strcpy(key, "CLSID\\");
|
||||||
|
sprintf(key+6, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
|
||||||
|
id->Data1, id->Data2, id->Data3,
|
||||||
|
id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
|
||||||
|
id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7]);
|
||||||
|
sprintf(val, "%s Word Breaker", lang);
|
||||||
|
add_key_val( key, NULL, val );
|
||||||
|
strcat(key, "\\InProcServer32");
|
||||||
|
add_key_val( key, NULL, "infosoft.dll" );
|
||||||
|
add_key_val( key, "ThreadingModel", "Both" );
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ADD_BREAKER(name) add_wordbreaker_clsid( #name, &CLSID_wb_##name )
|
||||||
|
|
||||||
|
static HRESULT add_content_index_keys(void)
|
||||||
|
{
|
||||||
|
ADD_BREAKER(Neutral); /* in query.dll on Windows */
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI DllRegisterServer(void)
|
||||||
|
{
|
||||||
|
add_content_index_keys();
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@ static const IWordBreakerVtbl wordbreaker_vtbl =
|
||||||
wb_GetLicenseToUse,
|
wb_GetLicenseToUse,
|
||||||
};
|
};
|
||||||
|
|
||||||
HRESULT WINAPI wb_en_us_Constructor(IUnknown* pUnkOuter, REFIID riid, LPVOID *ppvObject)
|
HRESULT WINAPI wb_Constructor(IUnknown* pUnkOuter, REFIID riid, LPVOID *ppvObject)
|
||||||
{
|
{
|
||||||
wordbreaker_impl *This;
|
wordbreaker_impl *This;
|
||||||
IWordBreaker *wb;
|
IWordBreaker *wb;
|
||||||
|
|
|
@ -31,6 +31,7 @@ WineFakeDlls=FakeDllsSection
|
||||||
UpdateInis=SystemIni
|
UpdateInis=SystemIni
|
||||||
AddReg=\
|
AddReg=\
|
||||||
Classes,\
|
Classes,\
|
||||||
|
ContentIndex,\
|
||||||
ControlClass,\
|
ControlClass,\
|
||||||
CurrentVersion,\
|
CurrentVersion,\
|
||||||
Debugger,\
|
Debugger,\
|
||||||
|
@ -53,6 +54,7 @@ WineFakeDlls=FakeDllsSection
|
||||||
UpdateInis=SystemIni
|
UpdateInis=SystemIni
|
||||||
AddReg=\
|
AddReg=\
|
||||||
Classes,\
|
Classes,\
|
||||||
|
ContentIndex,\
|
||||||
ControlClass,\
|
ControlClass,\
|
||||||
CurrentVersion,\
|
CurrentVersion,\
|
||||||
Debugger,\
|
Debugger,\
|
||||||
|
@ -141,6 +143,11 @@ HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0,,,"OLE Automation"
|
||||||
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\0\win32,,,"stdole2.tlb"
|
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\0\win32,,,"stdole2.tlb"
|
||||||
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\FLAGS,,,"0"
|
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\FLAGS,,,"0"
|
||||||
|
|
||||||
|
[ContentIndex]
|
||||||
|
HKLM,System\CurrentControlSet\Control\ContentIndex\Language\Neutral,"WBreakerClass",,"{369647e0-17b0-11ce-9950-00aa004bbb1f}"
|
||||||
|
HKLM,System\CurrentControlSet\Control\ContentIndex\Language\Neutral,"StemmerClass",,""
|
||||||
|
HKLM,System\CurrentControlSet\Control\ContentIndex\Language\Neutral,"Locale",0x10003,0
|
||||||
|
|
||||||
[ControlClass]
|
[ControlClass]
|
||||||
HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},,,"Ports (COM & LPT)"
|
HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},,,"Ports (COM & LPT)"
|
||||||
HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},"Class",,"Ports"
|
HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},"Class",,"Ports"
|
||||||
|
@ -2099,6 +2106,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G"
|
||||||
11,,dxdiagn.dll,1
|
11,,dxdiagn.dll,1
|
||||||
11,,hhctrl.ocx,1
|
11,,hhctrl.ocx,1
|
||||||
11,,hlink.dll,1
|
11,,hlink.dll,1
|
||||||
|
11,,infosoft.dll,1
|
||||||
11,,inseng.dll,1
|
11,,inseng.dll,1
|
||||||
11,,itss.dll,1
|
11,,itss.dll,1
|
||||||
11,,mlang.dll,1
|
11,,mlang.dll,1
|
||||||
|
|
Loading…
Reference in New Issue