PDA

View Full Version : تغییر زبان (کیبرد) در ویندوز 7



پرستو پارسایی
پنج شنبه 02 آبان 1398, 23:56 عصر
با سلام در مورد تغییر زبان جستجو کردم ولی نتیجه نگرفتم ، تغییر ربان تو ایکس پی انجام میشه ولی تو 7 نمیشه تو کدها هم از FA استفاده کردم هم از Farsi , هم از Persian .
ممنون میشم در صورت اطلاع دوستان پاسخ دهند
سپاس

hamidrezax1
جمعه 03 آبان 1398, 09:06 صبح
Public Function lang_changer_selectable(ByVal lang As String) As Int64 'load the main form's lamguage
Dim l As InputLanguage
Dim ll As InputLanguageCollection
Dim a As String
Try


ll = InputLanguage.InstalledInputLanguages
For Each l In ll


a = Microsoft.VisualBasic.Left(l.LayoutName, 1)
Select Case lang
Case "EN"
If a = "E" Or a = "e" Or a = "u" Or a = "U" Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "FA"
If a = "F" Or a = "f" Or a = "P" Or a = "p" Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "67699721" 'us
If l.Handle.ToString = lang Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "69796905" 'fa
If l.Handle.ToString = lang Then
Application.CurrentInputLanguage = l
Exit For
End If
End Select
Next
FileClose(1)
Catch ex As Exception


End Try
Return l.Handle.ToInt64
End Function

پرستو پارسایی
جمعه 03 آبان 1398, 12:34 عصر
با سلام ممنونم از پاسخ شما ولی کدهای ارسالی شما رو نتونستم بفهمم چرا بهم ریخته شده لطف کنید به عکس ضمیمه یه نگاهی بیاندازید . سپاسگزارم

hamidrezax1
جمعه 03 آبان 1398, 13:19 عصر
Public Function lang_changer_selectable(ByVal lang As String) As Int64 'load the main form's lamguage
Dim l As InputLanguage
Dim ll As InputLanguageCollection
Dim a As String
Try


ll = InputLanguage.InstalledInputLanguages
For Each l In ll


a = Microsoft.VisualBasic.Left(l.LayoutName, 1)
Select Case lang
Case "EN"
If a = "E" Or a = "e" Or a = "u" Or a = "U" Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "FA"
If a = "F" Or a = "f" Or a = "P" Or a = "p" Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "67699721" 'us
If l.Handle.ToString = lang Then
Application.CurrentInputLanguage = l
Exit For
End If
Case "69796905" 'fa
If l.Handle.ToString = lang Then
Application.CurrentInputLanguage = l
Exit For
End If
End Select
Next
FileClose(1)
Catch ex As Exception


End Try
Return l.Handle.ToInt64
End Function

hamidrezax1
جمعه 03 آبان 1398, 13:20 عصر
این کپی کنین یه فانکشن البته مال انجین اورانوس هستش. استاد فراهانی

پرستو پارسایی
جمعه 03 آبان 1398, 13:35 عصر
این کپی کنین یه فانکشن البته مال انجین اورانوس هستش. استاد فراهانی

سپاسگزارم از پاسخ شما

پرستو پارسایی
جمعه 03 آبان 1398, 16:30 عصر
متاسفانه در ویندوز 7 کار نمیکنه!!

hamidrezax1
شنبه 04 آبان 1398, 14:08 عصر
این فانکشن برای تمامی ویندوزها تست شده از اکس پی تا ویندوز 10.لطفا کدی رو که نوشتین و جایی که قراره ازش استفاده کنین رو بفرستین تا دوستان راهنمایی کنند

پرستو پارسایی
شنبه 04 آبان 1398, 15:43 عصر
ممنونم از توجه شما من این کد رو تو پروژه مد نظرم تو یا فانکشن گزاشتم و تو فرم لود ازش استفاده کردم ولی نتاسفانه جواب نگرفتم که طبق فرمایش شما حتما اشکال از نوع فراخوانیه که من انجام دادم عذر خواهی میکنم که نمیتونم خود پروزه رو ارسال کنم میشه خواهش کنم تو یه سورس کوچیک ارسال کنید . سپاسگزارم چه بشود چه نشود.

hamidrezax1
سه شنبه 07 آبان 1398, 08:46 صبح
سلام اینجا (http://uupload.ir/view/oa1m_lang_changer.rar/) فایل قرار دادم موفق باشید

پرستو پارسایی
چهارشنبه 08 آبان 1398, 00:01 صبح
سپاسگزارم فایل شما رو دریافت کردم و در کمال ناباوری کار نکرد فرمان رو با یک باتن اجرا کردم کارکرد واقعا ممنونم در کل تستی که انجام میدادم تو فرم لود اجرا میکردم نمیدونم چرا کار نمیکرد کماکان در فرم لود کار نمیکنه ولی مهم نیست باز هم سپاسگزارم

ROSTAM2
پنج شنبه 09 آبان 1398, 08:51 صبح
سپاسگزارم فایل شما رو دریافت کردم و در کمال ناباوری کار نکرد فرمان رو با یک باتن اجرا کردم کارکرد واقعا ممنونم در کل تستی که انجام میدادم تو فرم لود اجرا میکردم نمیدونم چرا کار نمیکرد کماکان در فرم لود کار نمیکنه ولی مهم نیست باز هم سپاسگزارم

با سلام. با عرض معذرت بخاطر دخالت بیجا ... ولی زبان فارسی ویندوز شما از تصویری که فرستادید مشخصه که نصب نشده ...

پرستو پارسایی
پنج شنبه 09 آبان 1398, 13:35 عصر
با سلام. با عرض معذرت بخاطر دخالت بیجا ... ولی زبان فارسی ویندوز شما از تصویری که فرستادید مشخصه که نصب نشده ...

سلام اکه نصب نبود که مشکل حل نمی شد در ضمن بدون هیچ کدی زبان ویندوز من در همین پروژه با ALT+SHIFT تعویض میشه ممنونم از توجه شما

nima_8m
شنبه 11 آبان 1398, 18:26 عصر
سلام وقت بخیر خیلی ساده است ابتدا یه کلاس تعریف کن یا همین و کپی کن راحت :لبخند:


Public Class InputLanguages
Public Sub EnglishKeyboard()
For Each Language As InputLanguage In InputLanguage.InstalledInputLanguages
If Language.Culture.TwoLetterISOLanguageName.Contains ("en") = True Then
InputLanguage.CurrentInputLanguage = Language
End If
Next
End Sub
Public Sub PersianKeyboard()
For Each Language As InputLanguage In InputLanguage.InstalledInputLanguages
If Language.Culture.TwoLetterISOLanguageName.Contains ("fa") = True Then
InputLanguage.CurrentInputLanguage = Language
End If
Next
End Sub
End Class



توجه توجه :
برای ویندوزهای 7 و xp حروف اختصاری زبان فارسی رو باید با یه or اضافه کنی این مثال من برا ویندوز 10 هست که زبان فارسی رو با "fa" می شناسه
خوب حالا بیا هرجا خواستی فارسی تایپ کنی مثلا یه تکس باکس که میخواد نام کالا رو وارد که تو رویداد GotFocus از کلاس استفاده کن به این صورت



InputLang.PersianKeyboard()

و اینم برا تکس باکس هایی که انگلیسی میخوان



InputLang.EnglishKeyboard()


فراموش کردم بگم تو هر فرم که خواستی از این کلاس استفاده کنی باید یه متغیر از نوع کلاس تعریف شه


Private InputLang As New InputLanguages

پرستو پارسایی
یک شنبه 12 آبان 1398, 23:19 عصر
سپاسگزارم از پاسخ شما