PDA

View Full Version : سوال: آیا این کد همیشه درست کار می کند؟؟ (در مورد تشخیص نصب زبان فارسی بر روی سیستم)



BORHAN TEC
سه شنبه 09 آذر 1389, 10:05 صبح
سلام به همه دوستان :قلب:
من کدی نوشته ام که می تواند تشخیص دهد که زبان فارسی روی سیستم نصب شده است یا نه.
این هم کدی است که نوشته ام:

procedure TForm1.Button1Click(Sender: TObject);
begin
LoadKeyboardLayout('00000429', 1);

if GetKeyboardLayout(0) = $4290429 then
ShowMessage('Installed')
else
ShowMessage('Not Installed');
end;

حالا در مورد کد بالا چند تا سوال دارم:
1- آیا کد بالا همیشه درست کار می کند؟
2- مشکل کد بالا این است که زبان جاری سیستم را تغییر میدهد. چگونه آن را باید به وضعیت قبلی برگردانم؟
3- در صورت نصب نبودن زبان فارسی بر روی سیستم چگونه باید با کدنویسی آن را نصب کنم؟ (جستجو هم انجام دادم ولی موردی را پیدا نکردم)

با تشکر از همه عزیزان... :لبخندساده:

Arman_1367
سه شنبه 09 آذر 1389, 10:15 صبح
کافی است قبل از تغییر زبان آن را با همان تابع
GetKeyboardLayout

در یک متغییر دخیره کنید و بعد از عملیات خودتون اونو به حالت اول بر گردانید.

BORHAN TEC
سه شنبه 09 آذر 1389, 10:23 صبح
کافی است قبل از تغییر زبان آن را با همان تابع
GetKeyboardLayout

در یک متغییر دخیره کنید و بعد از عملیات خودتون اونو به حالت اول بر گردانید
این رو که خودم هم میدونم! :متفکر:
لطفاً با ارائه کد جواب بدین. :عصبانی:

Felony
سه شنبه 09 آذر 1389, 11:04 صبح
سلام به همه دوستان :قلب:
من کدی نوشته ام که می تواند تشخیص دهد که زبان فارسی روی سیستم نصب شده است یا نه.
این هم کدی است که نوشته ام:

procedure TForm1.Button1Click(Sender: TObject);
begin
LoadKeyboardLayout('00000429', 1);

if GetKeyboardLayout(0) = $4290429 then
ShowMessage('Installed')
else
ShowMessage('Not Installed');
end;

حالا در مورد کد بالا چند تا سوال دارم:
1- آیا کد بالا همیشه درست کار می کند؟
2- مشکل کد بالا این است که زبان جاری سیستم را تغییر میدهد. چگونه آن را باید به وضعیت قبلی برگردانم؟
3- در صورت نصب نبودن زبان فارسی بر روی سیستم چگونه باید با کدنویسی آن را نصب کنم؟ (جستجو هم انجام دادم ولی موردی را پیدا نکردم)

با تشکر از همه عزیزان... :لبخندساده:

1- فکر میکنم اینطور باشه .

2- به صورت زیر :


var
L: Cardinal;
begin
L:= GetKeyboardLayout(0);
LoadKeyboardLayout('00000429', 1);
if GetKeyboardLayout(0) = $4290429 then
ShowMessage('Installed')
else
ShowMessage('Not Installed');
LoadKeyboardLayout(FloatToStr(L), 1);
end;

3- خیلی وقت پیش تاپیکی برای نصب فارسی رو سیستم هایی که فارسی ندارن ایجاد شده بود و یکی از دوستان یه فایل اجرایی قرار داده بود که میگفت همچین کاری رو انجام میده ، البته من تستش نکردم ولی تا جایی که یادمه تو اون تاپیک به نتیجه رسیده بودن ، من اون فایل رو براتون ضمیمه کردم ، اگر تستش کردید و جواب داد همین جا اعلام کنید تا دوستان دیگه ای که همچین سوالی دارن سردرگم نشن .

موفق باشید .

BORHAN TEC
سه شنبه 09 آذر 1389, 14:30 عصر
خیلی وقت پیش تاپیکی برای نصب فارسی رو سیستم هایی که فارسی ندارن ایجاد شده بود و یکی از دوستان یه فایل اجرایی قرار داده بود که میگفت همچین کاری رو انجام میده ، البته من تستش نکردم ولی تا جایی که یادمه تو اون تاپیک به نتیجه رسیده بودن ، من اون فایل رو براتون ضمیمه کردم ، اگر تستش کردید و جواب داد همین جا اعلام کنید تا دوستان دیگه ای که همچین سوالی دارن سردرگم نشن .
با تشکر از دوست خوبم آقا مجتبی تاجیک... :قلب:
برنامه ای که قرار دادین درست کار می کنه فقط یک ضعف داره و اون اینه که اگه قصد استفاده از ویندوز XP را داشته باشیم ابتدا باید به صورت دستی گزینه Install Files for complex script and right-to-left ... را از طریق Control Panel و سپس Regional and Language Options و سپس سربرگ Languages فعال کنیم و سپس فایل مذکور را اجرا کنیم. که اگر این برنامه می توانست که تمام این کارها را به صورت خودکار انجام دهد نور علی نور می شد.