ورود

View Full Version : زبان رايج سيستم



ATA_TABRIZ
پنج شنبه 14 اردیبهشت 1391, 12:28 عصر
با سلام
از دوستان كسي ميتونه تابعي معرفي كنه كه زبان رايج سيستم بده به فرض اگه بخواهيم در يك فيلد زبان فارسي هميشه تايپ شود كنترل كنيم كه فارسي نبود با ارسال Alt + shift عوض كنيم

خواهشا نگيد از keybord language استفاده كن ميخوام با برنامه نويسي عوض كنم

قبلا از مساعدتون تشكر ميكنم

Abbas Amiri
پنج شنبه 14 اردیبهشت 1391, 17:47 عصر
انکشن زیر را دریک ماژول کپی کنید و با دستور ChangeLang true صفحه کلید را فارسی ChangeLang False انگلیسی کنید


Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, _
ByVal flags As Long) As Long

Public Function ChangeLang(blnFarsi As Boolean) As Boolean
On Error GoTo ErrLang
If blnFarsi Then
ActivateKeyboardLayout 1, 1
Else
ActivateKeyboardLayout 0, 1
End If
ChangeLang = True

ErrLang:
End Function

ATA_TABRIZ
شنبه 16 اردیبهشت 1391, 08:10 صبح
انکشن زیر را دریک ماژول کپی کنید و با دستور ChangeLang true صفحه کلید را فارسی ChangeLang False انگلیسی کنید


Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, _
ByVal flags As Long) As Long

Public Function ChangeLang(blnFarsi As Boolean) As Boolean
On Error GoTo ErrLang
If blnFarsi Then
ActivateKeyboardLayout 1, 1
Else
ActivateKeyboardLayout 0, 1
End If
ChangeLang = True

ErrLang:
End Function



جناب آقاي اميري با سلام و تشكر از حسن توجه شما
منظور بنده از تغيير زبان اين است كه تابعي باشه كه زبان بما برگردونه حالا اگه مورد نظر مابود كه هيچ اگه نبود از برنامه هايي مانند اونچه كه شما لطف كرديد ارسال كرديد استفاده كنيم و عوض كنيم ( تابعي كه زبان فعال را بما برگردونه)

Younestalebi
شنبه 16 اردیبهشت 1391, 13:58 عصر
جناب آقاي اميري با سلام
لطفاً كد را امتحان كنيد اگر ChangeLang -
True يا False باشه فرق نميكنه كدوم رو انتخاب كرده باشيم در هر صورت زبان جاري رو برعكس مي كنه لطفاً اصلاح بفرمائيد

Abbas Amiri
شنبه 16 اردیبهشت 1391, 20:08 عصر
این کد را دریک ماژول کپی کنید با اجرای ChangeKeyboardLayout Persian یا ChangeKeyboardLayout English زبان کیبورد تغییر خواهدکرد احتیاج به چک کردن هم ندارد داخل تابع اینکارانجام میشود.
اگر میخواهید فقط در زمانیکه در یک کنترل فوکوس میکنید زبان تغییر کند ، در ایونت Enter و Exit آن اقدام به عوض کردن زبان کنید


Const KL_NAMELENGTH As Long = 9
Const KLF_ACTIVATE As Long = &H1
Public Enum LangCode
English = 409
persian = 429
End Enum

Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long

Public Function ChangeKeyboardLayout(LangName As LangCode) As Boolean
On Error Resume Next
Dim strLocId As String
Dim strMsg As String
Dim lngErrNr As Long

strLocId = String(KL_NAMELENGTH, 0)
GetKeyboardLayoutName strLocId
If strLocId = (Format(LangName, "00000000") & Chr(0)) Then
ChangeKeyboardLayout = True
Else
strLocId = String(KL_NAMELENGTH, 0)
strLocId = LoadKeyboardLayout((Format(LangName, "00000000") & Chr(0)), KLF_ACTIVATE)
If IsNull(strLocId) Then
ChangeKeyboardLayout = False
Else
strLocId = String(KL_NAMELENGTH, 0)
GetKeyboardLayoutName strLocId
If strLocId = (Format(LangName, "00000000") & Chr(0)) Then
ChangeKeyboardLayout = True
Else
ChangeKeyboardLayout = False
End If
End If
End If
End Function