www.pudn.com > 智能内码识别,支持屏幕取词翻译的程序.zip > CHINESE.CPP


//汉化 
 
#include	"stdafx.h" 
//#include	 
#include	 
#include 	 
 
#include	"cspublic.h" 
#include	"cskernel.h" 
#include	"chinese.h" 
#include	"myfunc.h" 
#include	"hzout.h" 
 
static ALLHOOKFUNCMESS	AllHookFuncMess ; 
static	int 			nChineseFlag =0 ;	//标记是否有中文系统,0没有,1有 
 
BOOL	GetHookMem( void ) 
{ 
	AllHookFuncMess.bLongJump	=0xea ; 
	 
	//不能超过MAX_HOOK_FUNCTION个 
	AllHookFuncMess.nHookFuncNum	=7 ; 
	 
/*	AllHookFuncMess.lpHookFuncMess	= 
		(ONEHOOKFUNCMESS	far	*)GlobalAllocPtr( 
				GHND ,  
				(DWORD)AllHookFuncMess.nHookFuncNum * 
					sizeof( ONEHOOKFUNCMESS ) ) ; 
	if( !AllHookFuncMess.lpHookFuncMess ) 
		return( FALSE ) ; 
*/		 
	return( TRUE ) ; 
} 
 
BOOL	GetHookMess( void ) 
{ 
	strcpy( AllHookFuncMess.HookFuncMess[0].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[0].sFuncName , 
				"TextOut" ) ; 
	AllHookFuncMess.HookFuncMess[0].lpNewFuncAddress	= 
		(LPSTR)MyTextOut ; 
 
	strcpy( AllHookFuncMess.HookFuncMess[5].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[5].sFuncName , 
				"ExtTextOut" ) ; 
	AllHookFuncMess.HookFuncMess[5].lpNewFuncAddress	= 
		(LPSTR)MyExtTextOut ; 
 
	strcpy( AllHookFuncMess.HookFuncMess[1].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[1].sFuncName , 
				"GetCharWidth" ) ; 
	AllHookFuncMess.HookFuncMess[1].lpNewFuncAddress	= 
		(LPSTR)MyGetCharWidth ; 
 
	strcpy( AllHookFuncMess.HookFuncMess[2].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[2].sFuncName , 
				"GetCharABCWidths" ) ; 
	AllHookFuncMess.HookFuncMess[2].lpNewFuncAddress	= 
		(LPSTR)MyGetCharABCWidths ; 
 
	strcpy( AllHookFuncMess.HookFuncMess[3].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[3].sFuncName , 
				"GetTextExtent" ) ; 
	AllHookFuncMess.HookFuncMess[3].lpNewFuncAddress	= 
		(LPSTR)MyGetTextExtent ; 
		 
	strcpy( AllHookFuncMess.HookFuncMess[4].sModuleName , 
				"USER" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[4].sFuncName , 
				"DrawText" ) ; 
	AllHookFuncMess.HookFuncMess[4].lpNewFuncAddress	= 
		(LPSTR)MyDrawText ; 
 
	strcpy( AllHookFuncMess.HookFuncMess[6].sModuleName , 
				"USER" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[6].sFuncName , 
				"GetSystemMetrics" ) ; 
	AllHookFuncMess.HookFuncMess[6].lpNewFuncAddress	= 
		(LPSTR)MyGetSystemMetrics ; 
/*		 
	strcpy( AllHookFuncMess.HookFuncMess[7].sModuleName , 
				"GDI" ) ; 
	strcpy( AllHookFuncMess.HookFuncMess[7].sFuncName , 
				"GetTextMetrics" ) ; 
	AllHookFuncMess.HookFuncMess[7].lpNewFuncAddress	= 
		(LPSTR)MyGetTextMetrics ;*/ 
//--------------------------------------------------------------------------//      
 
	LPSTR	lpOldFunction ; 
	int				i , j ; 
	for( i=0 ; i