www.pudn.com > pinyin.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