داداش من source دلفی اش را نمی دونم کجاست ولی C++ Biulder آن را برات می فرستم نمی گم 100% کار می کنه چون خودم بیشتر دستی انجام می دم وزیاد تستش نکردم ولی چند بار که در Xp امتحان کردم درست بود تو هم امتحان کن و نتیجه را برای بقیه ذکر کن تا اشتباه نباشه
void TMainFrm::AddFarsiLanguage(void)
{
TRegistry *Reg=new TRegistry();
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("\\SYSTEM\\CurrentControlSet\\Control \\keyboard layouts\\00000429",true);
Reg->WriteString("Layout File","KBDFA.DLL");
Reg->WriteString("Layout Text","Farsi");
Reg->OpenKey("\\SYSTEM\\CurrentControlSet\\Control \\Nls\\Locale",true);
Reg->WriteString("00000429","d");
Reg->OpenKey("\\SYSTEM\\CurrentControlSet\\Control \\Nls\\Language Groups",true);
Reg->WriteString("d","1");
Reg->OpenKey("\\SYSTEM\\CurrentControlSet\\Control \\Nls\\Language",true);
Reg->WriteString("0429","l_intl.nls");
Reg->WriteString("Default","0429");
Reg->CloseKey();
Reg->Free();
/* TMemoryStream *stream = new TMemoryStream();
stream->LoadFromFile(exePath+"dat\\kbdfa.dll");
stream->Position = 0;
stream->SaveToFile(SystemDir);
stream->Position = 0;
stream->Clear();*/
CopyFile((exePath+"dat\\kbdfa.dll").c_ str(),(SystemDir).c_str(), TRUE);
/*stream->LoadFromFile(exePath+"dat\\l_intl.nls") ;
stream->Position = 0;
stream->SaveToFile(SystemDir);
stream->Position = 0;
stream->Clear();*/
CopyFile((exePath+"dat\\l_intl.nls").c _str(),(SystemDir).c_str() , TRUE);
}