PDA

View Full Version : با چه کدی می شه فهمید که کاربر زبان فارسی رو نصب کرده یا نه ؟



Mahmood_M
جمعه 11 فروردین 1385, 06:25 صبح
چه طور می تونم بفهمم که کاربر توی کامپیوترش زبان فارسی رو نصب کرده یا نه ؟
یا حد اقل فارسی در حالت انتخاب است یا نه
راستش جستجو کردم ولی نتونستم کدش اصلیش رو پیدا کنم ...

Ehsansh
جمعه 11 فروردین 1385, 22:34 عصر
تو کتاب 296 برنامه هست. الان دم دستم نیست وگرنه کدشو برات میذاشتم.
علاوه بر تشخیص امکان نصب زبان رو هم در اون کتاب توضیح داده.
امیدوارم کمکت کنه...

مهدی کرامتی
شنبه 12 فروردین 1385, 00:21 صبح
if SysLocale.MiddleEast = True then // BidiMode is active
برای این که ببینی زبان فارسی نصب شده یا نه میتونی صفحه کلیدهای نصب شده در ویندوز رو بشماری. اگر در بین شون کد زبان فارسی (429) یافت شد یعنی فارسی نصب است. تابع اش هم چیزی شبیه به EnumKeyboardLayout بود.

Mahmood_M
شنبه 12 فروردین 1385, 00:45 صبح
از دوستان به خاطر جوابهایی که دادند تشکر می کنم ...
یه چیز دیگه :
من یه Procedure نوشتم که باهاش می شه زبان فارسی رو نصب کرد.
می خواستم نظر بقیه دوستان رو در مورد این رویه بدونم.
به نظر شما این رویه مشکلی نداره ؟
اینم کدش :

procedure FarsiLanguage;
var
Reg: Tregistry;
begin
Reg:= Tregistry.Create;
with Reg do
try
RootKey:= HKEY_LOCAL_MACHINE;
OpenKey('\System\CurrentControlset\KeyBoard layouts\00000429', True);
Writestring('Layout File','KBDFA.DLL');
Writestring('Layout Text','Farsi');
OpenKey('\System\CurrentControlset\Control\Nls\Loc al',True);
Writestring('00000429','d');
OpenKey('\System\CurrentControlset\Control\Nls\Lan guage Group',True);
Writestring('d','1');
OpenKey('\System\CurrentControlset\Control\Nls\Lan guage',True);
Writestring('0429','l_intl.nls');
CloseKey;
finally
Free;
end;
try
CopyFile('KBDFA.DLL','C:\Windows\System32\KBDFA.DL L',True);
CopyFile('l_intl.nsl','C:\Windows\System32\l_intl. nsl',True);
except
end;
end;
البته همش از خودنم نیست ...
این رویه تقریبا همون کارهایی رو می کنه که ویندوز در هنگام نصب زبان راست به چپ انجام می ده ( یه بدیش اینه که باید فایلهای ذکر شده در کد همراه برنامه باشند )