mirror of
https://github.com/reactos/wine.git
synced 2024-11-24 04:10:04 +00:00
infosoft: Convert dll registration to the IRegistrar mechanism.
This commit is contained in:
parent
7092313b2a
commit
79bab49904
1
.gitignore
vendored
1
.gitignore
vendored
@ -50,6 +50,7 @@ dlls/d3dcompiler_43/asmshader.yy.c
|
||||
dlls/dispex/disp_ex.h
|
||||
dlls/dispex/disp_ex_p.c
|
||||
dlls/dxdiagn/fil_data.h
|
||||
dlls/infosoft/infosoft.h
|
||||
dlls/jscript/jsglobal.tlb
|
||||
dlls/jscript/parser.tab.c
|
||||
dlls/jscript/parser.tab.h
|
||||
|
@ -6,4 +6,7 @@ C_SRCS = \
|
||||
infosoft_main.c \
|
||||
wordbreaker.c
|
||||
|
||||
IDL_H_SRCS = infosoft.idl
|
||||
IDL_R_SRCS = infosoft.idl
|
||||
|
||||
@MAKE_DLL_RULES@
|
||||
|
26
dlls/infosoft/infosoft.idl
Normal file
26
dlls/infosoft/infosoft.idl
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* COM Classes for infosoft
|
||||
*
|
||||
* Copyright 2010 Alexandre Julliard
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
[
|
||||
helpstring("Neutral Word Breaker"),
|
||||
threading(both),
|
||||
uuid(369647e0-17b0-11ce-9950-00aa004bbb1f)
|
||||
]
|
||||
coclass wb_Neutral { interface IWordBreaker; }
|
@ -28,16 +28,17 @@
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winuser.h"
|
||||
#include "winreg.h"
|
||||
#include "ole2.h"
|
||||
#include "rpcproxy.h"
|
||||
#include "indexsrv.h"
|
||||
#include "initguid.h"
|
||||
#include "infosoft.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(infosoft);
|
||||
|
||||
DEFINE_GUID(CLSID_wb_Neutral,0x369647e0,0x17b0,0x11ce,0x99,0x50,0x00,0xaa,0x00,0x4b,0xbb,0x1f);
|
||||
static HINSTANCE instance;
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
||||
{
|
||||
@ -46,6 +47,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
||||
case DLL_WINE_PREATTACH:
|
||||
return FALSE; /* prefer native version */
|
||||
case DLL_PROCESS_ATTACH:
|
||||
instance = hInstDLL;
|
||||
DisableThreadLibraryCalls(hInstDLL);
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
@ -155,46 +157,18 @@ HRESULT WINAPI DllCanUnloadNow(void)
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
static HRESULT add_key_val( LPCSTR key, LPCSTR valname, LPCSTR value )
|
||||
{
|
||||
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, "{%08X-%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;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllRegisterServer (INFOSOFT.@)
|
||||
* DllRegisterServer (INFOSOFT.@)
|
||||
*/
|
||||
HRESULT WINAPI DllRegisterServer(void)
|
||||
{
|
||||
add_content_index_keys();
|
||||
return S_OK;
|
||||
return __wine_register_resources( instance, NULL );
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllUnregisterServer (INFOSOFT.@)
|
||||
*/
|
||||
HRESULT WINAPI DllUnregisterServer(void)
|
||||
{
|
||||
return __wine_unregister_resources( instance, NULL );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user