Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
3.1 KiB

//+---------------------------------------------------------------------------
//
// File: server.cpp
//
// Contents: COM server functionality.
//
//----------------------------------------------------------------------------
#include "private.h"
#include "cdimm.h"
#include "globals.h"
#include "util.h"
#include "imeapp.h"
BOOL DIMM12_DllProcessAttach()
{
if (g_ProcessIMM == NULL)
{
g_ProcessIMM = new CProcessIMM;
if (g_ProcessIMM == NULL)
{
return FALSE;
}
}
if (IsOnNT())
{
HINSTANCE hUser32 = GetSystemModuleHandle(TEXT("user32.dll"));
if (hUser32)
g_pfnToUnicodeEx = (TOUNICODEEX)GetProcAddress(hUser32, TEXT("ToUnicodeEx"));
}
WM_MSIME_SERVICE = RegisterWindowMessageA( RWM_SERVICE );
WM_MSIME_UIREADY = RegisterWindowMessageA( RWM_UIREADY );
WM_MSIME_RECONVERTREQUEST = RegisterWindowMessageA( RWM_RECONVERTREQUEST );
WM_MSIME_RECONVERT = RegisterWindowMessageA( RWM_RECONVERT );
WM_MSIME_DOCUMENTFEED = RegisterWindowMessageA( RWM_DOCUMENTFEED );
WM_MSIME_QUERYPOSITION = RegisterWindowMessageA( RWM_QUERYPOSITION );
WM_MSIME_MODEBIAS = RegisterWindowMessageA( RWM_MODEBIAS );
WM_MSIME_SHOWIMEPAD = RegisterWindowMessageA( RWM_SHOWIMEPAD );
WM_MSIME_MOUSE = RegisterWindowMessageA( RWM_MOUSE );
WM_MSIME_KEYMAP = RegisterWindowMessageA( RWM_KEYMAP );
if (!WM_MSIME_SERVICE ||
!WM_MSIME_UIREADY ||
!WM_MSIME_RECONVERTREQUEST ||
!WM_MSIME_RECONVERT ||
!WM_MSIME_DOCUMENTFEED ||
!WM_MSIME_QUERYPOSITION ||
!WM_MSIME_MODEBIAS ||
!WM_MSIME_SHOWIMEPAD ||
!WM_MSIME_MOUSE ||
!WM_MSIME_KEYMAP)
return FALSE;
return TRUE;
}
void DIMM12_DllProcessDeatch()
{
if (g_ProcessIMM != NULL)
{
delete g_ProcessIMM;
}
}
HRESULT DIMM12_DllRegisterServer(void)
{
TCHAR achPath[MAX_PATH+1];
HRESULT hr = E_FAIL;
if (GetModuleFileName(g_hInst, achPath, ARRAYSIZE(achPath)) == 0)
goto Exit;
if (!RegisterServer(CLSID_CActiveIMM, TEXT("Active IMM"), achPath, TEXT("Apartment"), NULL))
goto Exit;
if (!RegisterServer(CLSID_CActiveIMM12, TEXT("Active IMM"), achPath, TEXT("Apartment"), NULL))
goto Exit;
if (!RegisterServer(CLSID_CActiveIMM12_Trident, TEXT("Active IMM"), achPath, TEXT("Apartment"), NULL))
goto Exit;
hr = S_OK;
Exit:
return hr;
}
HRESULT DIMM12_DllUnregisterServer(void)
{
HRESULT hr;
if (FAILED(hr = RegisterServer(CLSID_CActiveIMM, NULL, NULL, NULL, NULL) ? S_OK : E_FAIL))
goto Exit;
if (FAILED(hr = RegisterServer(CLSID_CActiveIMM12, NULL, NULL, NULL, NULL) ? S_OK : E_FAIL))
goto Exit;
if (FAILED(hr = RegisterServer(CLSID_CActiveIMM12_Trident, NULL, NULL, NULL, NULL) ? S_OK : E_FAIL))
goto Exit;
Exit:
return hr;
}