PDA

View Full Version : بدست آوردن زبان های ویندوز



loo30fer
یک شنبه 12 دی 1389, 23:05 عصر
با سلام
میخواستم بدونم چطوری میشه زبان های نصب شده کیبورد رو بدست آورد با تشکر

Felony
یک شنبه 12 دی 1389, 23:50 عصر
var
AList : array [0..9] of LongWord;
AklName: array [0..255] of Char;
i: Longint;
begin
for i:= 0 to GetKeyboardLayoutList(SizeOf(AList), AList)- 1 do
begin
GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));
Memo1.Lines.AddObject(AklName, Pointer(AList[i]));
end;
end;

loo30fer
سه شنبه 30 فروردین 1390, 15:29 عصر
مثلا زبان سیستم من الان رو FA هست حالا چطور میتونم زبان جاری رو بگیرم ؟ هرچقدرم با این کدتون ور رفتم و جستجو کردم باز نتیجه ای نداشت :ناراحت:

Felony
سه شنبه 30 فروردین 1390, 16:50 عصر
مشکلی نداره .

loo30fer
سه شنبه 30 فروردین 1390, 17:32 عصر
بله درسته جناب تاجیک , منظور من این بود که من الان زبان ویندوزم رو روی FA قرار میدم حالا با چه کدی میتونم موقعیت فعلی رو بگیرم که بگه زبان سیستم روی FA و وقتی رو EN یا AR تغییر میدم بگه روی EN هست , اینم که گفتم با کدتون ور رفتم منظورم این بود که سعی کردم با تابع هایی توی کد اینکار رو انجام بدم ولی نشد. ممنون میشم من رو راهنمایی کنید ضمنا ممنون از اینکه جواب بنده رو دادین.

Felony
سه شنبه 30 فروردین 1390, 20:06 عصر
در مورد تابع GetKeyboardLayout در MSDN تحقیق کنید .

loo30fer
چهارشنبه 31 فروردین 1390, 00:27 صبح
بسیار ممنون جناب تاجیک به نتیجه رسیدم و مشکلم حل شد فقط یک سوال در این رابطه مونده اینم اینکه از کجا میتونم لیست شماره های تمامی زبانها رو گیر بیارم برای مثال FA = 00000429 و EN = 00000409

loo30fer
پنج شنبه 01 اردیبهشت 1390, 02:07 صبح
آیا تابعی وجود داره که وقتی مثلا شماره 00000429 رو بهش بدیم FA رو بده یا همینطور 00000409 رو EN بده

tdkhakpur
پنج شنبه 01 اردیبهشت 1390, 03:01 صبح
آیا تابعی وجود داره که وقتی مثلا شماره 00000429 رو بهش بدیم FA رو بده یا همینطور 00000409 رو EN بده
میتونید خودتان هم داخل case برگشت بدید.
اینها یک سری عددهای ثابتی هستند که به زبانهای مختلف اختصاص داده شده فایل windows.pas رو نگاه کنید عددها داخلش قید شده.

loo30fer
پنج شنبه 01 اردیبهشت 1390, 15:36 عصر
ببخشید جناب تاجیک نمیشه تو کدی قرار دارین به جای اینکه اسم کامل زبانهای نصب شده رو بگیره اسم اختصاریش رو بگیره مثلا به جای اینکه بگیره English (United States) بگیره EN و به جای اینکه بگیره Persian بگیره FA تا دیگه نیازی به شرطی و چک کردن و کدنویسی ما نباشه؟

var
AList : array [0..9] of LongWord;
AklName: array [0..255] of Char;
i: Longint;
begin
for i:= 0 to GetKeyboardLayoutList(SizeOf(AList), AList)- 1 do
begin
GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));
Memo1.Lines.AddObject(AklName, Pointer(AList[i]));
end;
end;


راستی یادمه قبلا یک فایل درست کرده بودین که زبان فارسی رو اتوماتیک نصب میکرد راستش الان بهش نیاز دارم چند روز هم هست که دارم جستجو میکنم ولی پیدا نمیکنم ممنون میشم لینک تاپیکش یا همون فایل رو قرار بدین.

loo30fer
شنبه 03 اردیبهشت 1390, 15:53 عصر
همچنان منتظرم جناب تاجیک ممنون میشم اگه جواب سوال بنده رو بدین .

Felony
دوشنبه 05 اردیبهشت 1390, 19:49 عصر
ببخشید جناب تاجیک نمیشه تو کدی قرار دارین به جای اینکه اسم کامل زبانهای نصب شده رو بگیره اسم اختصاریش رو بگیره مثلا به جای اینکه بگیره English (United States) بگیره EN و به جای اینکه بگیره Persian بگیره FA تا دیگه نیازی به شرطی و چک کردن و کدنویسی ما نباشه؟

var
AList : array [0..9] of LongWord;
AklName: array [0..255] of Char;
i: Longint;
begin
for i:= 0 to GetKeyboardLayoutList(SizeOf(AList), AList)- 1 do
begin
GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));
Memo1.Lines.AddObject(AklName, Pointer(AList[i]));
end;
end;


راستی یادمه قبلا یک فایل درست کرده بودین که زبان فارسی رو اتوماتیک نصب میکرد راستش الان بهش نیاز دارم چند روز هم هست که دارم جستجو میکنم ولی پیدا نمیکنم ممنون میشم لینک تاپیکش یا همون فایل رو قرار بدین.
باید پارامتر LCType تابع GetLocalInfo رو با LOCALE_SISO639LANGNAME مقدار دهی کنید .

اون فایل رو هم من نساختم ، براتون ضمیمه کردمش .

loo30fer
دوشنبه 12 اردیبهشت 1390, 10:13 صبح
ببخشید جناب تاجیک امکانش هست که با تابع GetKeyboardLayout زبان جاری سیستم رو بر اساس کدش بگیریم ؟
اگه میشه ممنون میشم من رو راهنمایی کنید.

loo30fer
دوشنبه 12 اردیبهشت 1390, 13:00 عصر
یک سوال دیگه هم داشتم تابعی وجود نداره که یا EN رو به کدش که 00000409 تبدیل کنه یا 00000409 رو به EN ؟ البته میدونم میتونم تو Case پیادش کنم ولی من دنبال تابعی میگردم که اینکار رو مستقیم انجام بده ممنون میشم من رو راهنمایی کنید.