PDA

View Full Version : سوال: چگونه می توان زبان سیستم را تغییر داد



حسین محمدی
سه شنبه 17 اردیبهشت 1387, 12:48 عصر
با سلام

1 - از کجا بفهمیم که چه زبانهایی بر روی یک سیستم نصب شده است؟
2 - چگونه می توان در داخل برنامه بین زبانهای نصب شده در ویندوز سوئیچ کرد؟

مثلا من دو TextBox دارم که داخل یکی کاربر به صورت انگلیسی و در دیگری کاربر به صورت فارسی باید مقادیر را وارد کند. چگونه می توان با ورود به هر TextBox زبان سیستم مطابق با آن تغییر کند؟

Nima_NF
سه شنبه 17 اردیبهشت 1387, 17:20 عصر
از API های زیر استفاده کنید و شروع به دریافت کیبرد و تست آن ها کنید.



LoadKeyboardLayout()
ActivateKeyboardLayout()
GetKeyboardLayoutList()


برای فیلد مورد نظر در دیالوگ خود، خاصیت راست به چپ را فعال کنید، هرگاه focus بر روی آن بود از ActivateKeyboardLayout استفاده کنید تا کیبرد مورد نظر (فارسی یا انگلیسی) فعال شود.




loop = GetKeyboardLayoutList(0,0);

Keyboard = ActivateKeyboardLayout(HKL_NEXT, 0);

بعد در یک حلقه به تعداد کیبرد ها مقادیر keyboard را مقایسه می کنید:



HKL Farsi, English, Keyboard; // global
BOOL IsFarsi = FALSE; // global

// check previous keyboard
if ( LOWORD((DWORD)Keyboard) == 0x0429 )
{
IsFarsi = TRUE;
Farsi = Keyboard;
}

else if ( LOWORD((DWORD)Keyboard) == 0x0409 )
English = Keyboard;

و در انتها فارسی وجود دارد، پس فارسی می شود:



if (IsFarsi)
ActivateKeyboardLayout((HKL)Farsi, 0);

برای فیلد های انگلیسی هم به حات پیش فرض برگردانید.
لیست کد شناسایی مقادیر برای زبان ها (http://msdn.microsoft.com/en-us/library/ms776294%28VS.85%29.aspx)

روش های دیگر توسط دوتابع get و load را هم خودتان می توانید بررسی کنید.

موفق باشید