|
|
/*++
Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
Module Name:
FAKEIME.C ++*/
#include <windows.h>
#include "immdev.h"
#include "fakeime.h"
#include "resource.h"
#include "immsec.h"
extern HANDLE hMutex; /**********************************************************************/ /* DLLEntry() */ /**********************************************************************/ BOOL WINAPI DLLEntry ( HINSTANCE hInstDLL, DWORD dwFunction, LPVOID lpNot) { LPTSTR lpDicFileName; #ifdef DEBUG
TCHAR szDev[80]; #endif
MyDebugPrint((TEXT("DLLEntry:dwFunc=%d\n"),dwFunction));
switch(dwFunction) { PSECURITY_ATTRIBUTES psa;
case DLL_PROCESS_ATTACH: //
// Create/open a system global named mutex.
// The initial ownership is not needed.
// CreateSecurityAttributes() will create
// the proper security attribute for IME.
//
psa = CreateSecurityAttributes(); if ( psa != NULL ) { hMutex = CreateMutex( psa, FALSE, TEXT("FakeIme_Mutex")); FreeSecurityAttributes( psa ); if ( hMutex == NULL ) { // Failed
} } else { // Failed, not NT system
}
hInst= hInstDLL; IMERegisterClass( hInst );
// Initialize for FAKEIME.
lpDicFileName = (LPTSTR)&szDicFileName; lpDicFileName += GetWindowsDirectory(lpDicFileName,256); if (*(lpDicFileName-1) != TEXT('\\')) *lpDicFileName++ = TEXT('\\'); LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
SetGlobalFlags();
#ifdef DEBUG
wsprintf(szDev,TEXT("DLLEntry Process Attach hInst is %lx"),hInst); ImeLog(LOGF_ENTRY, szDev); #endif
break;
case DLL_PROCESS_DETACH: UnregisterClass(szUIClassName,hInst); UnregisterClass(szCompStrClassName,hInst); UnregisterClass(szCandClassName,hInst); UnregisterClass(szStatusClassName,hInst); if (hMutex) CloseHandle( hMutex ); #ifdef DEBUG
wsprintf(szDev,TEXT("DLLEntry Process Detach hInst is %lx"),hInst); ImeLog(LOGF_ENTRY, szDev); #endif
break;
case DLL_THREAD_ATTACH: #ifdef DEBUG
wsprintf(szDev,TEXT("DLLEntry Thread Attach hInst is %lx"),hInst); ImeLog(LOGF_ENTRY, szDev); #endif
break;
case DLL_THREAD_DETACH: #ifdef DEBUG
wsprintf(szDev,TEXT("DLLEntry Thread Detach hInst is %lx"),hInst); ImeLog(LOGF_ENTRY, szDev); #endif
break; } return TRUE; }
|