www.pudn.com > 82325543.rar > register.c


#include  
#include  
#include  
 
#define CONVERSION_SET 0x6101 
#define LAYOUTTEXT    _T("×ÔÓÉÆ´ÒôÊäÈë·¨") 
#define LAYOUTFILE    _T("kbdus.kbd") 
#define LAYOUTFILENT  _T("kbdus.dll") 
#define IMEFILE       _T("freepy.ime") 
 
#define MAX_SIZE 200 
#define MAX_SUBKEY 250 
 
void main() 
{ 
	HKEY hKey,hChildKey; 
	DWORD dwIndex; 
	DWORD dwName,dwMaxName = 0; 
	TCHAR szNameArr[MAX_SUBKEY][MAX_SIZE],szName[MAX_SIZE]; 
	DWORD dwLen; 
	TCHAR szLayoutText[MAX_SIZE]; 
	DWORD dwData; 
	FILETIME ft; 
	LONG lRet; 
	TCHAR szRegName[MAX_SIZE]; 
	DWORD dwDisposition; 
	DWORD dwConversionSet; 
	WORD wCount = 0; 
	int i; 
	OSVERSIONINFO osVerInfo; 
 
	dwIndex = 0; 
	dwLen = MAX_SIZE; 
	dwData = MAX_SIZE * sizeof(TCHAR); 
	dwConversionSet = CONVERSION_SET; 
 
	if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
			_T("Software"), 
			0, 
			KEY_READ, 
			&hKey) != ERROR_SUCCESS ){ 
		_ftprintf(stderr,_T("Software open error\n")); 
		exit(1); 
	} 
 
	if( RegCreateKeyEx( hKey, 
					_T("freepy"), 
					0, 
					NULL, 
					REG_OPTION_NON_VOLATILE , 
					KEY_ALL_ACCESS , 
					NULL, 
					&hChildKey, 
					&dwDisposition ) != ERROR_SUCCESS) { 
		RegCloseKey(hKey); 
		_ftprintf(stderr,_T("freepy create error\n")); 
		exit(1); 
	} 
 
	RegSetValueEx(hChildKey, 
				_T("ConversionSet"), 
				0, 
				REG_DWORD, 
				(LPBYTE)&dwConversionSet, 
				sizeof(DWORD)); 
 
	RegCloseKey(hChildKey); 
	RegCloseKey(hKey); 
 
	if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
			_T("System\\CurrentControlSet\\Control\\Keyboard Layouts"), 
			0, 
			KEY_READ, 
			&hKey) != ERROR_SUCCESS ){ 
		_ftprintf(stderr,_T("Keyboard Layouts open error\n")); 
		exit(1); 
	} 
 
	RegQueryInfoKey (hKey,NULL,	NULL,NULL, 
					&dwIndex, 
					NULL,NULL,NULL,	NULL,NULL,NULL,	NULL); 
 
	while( (int)dwIndex >= 0 ) { 
		dwLen = MAX_SIZE; 
		if((lRet = RegEnumKeyEx(hKey, 
					dwIndex, 
					szName, 
					&dwLen, 
					NULL, 
					NULL, 
					NULL, 
					&ft)) == ERROR_SUCCESS || lRet == ERROR_MORE_DATA ) { 
			_tcscpy(szNameArr[wCount++],szName); 
		} 
		dwIndex--; 
	} 
 
	for(i=0;i