با سلام
در مورد فراخوانی و تعویض زبان نوشتاری سیستم عامل در زبان های VB کتابخانه هایی وجود داره که می شه از آن ها استفاده کرد. به کد زیر توجه کنید. دو تابع در آنها وجود داره که فکر می کنم سوال شما رو پاسخ بده:
کد:
Option Explicit
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
Const KLF_ACTIVATE = &H1
Private Const LANG_ENGLISH As String = "00000409"
Private Const LANG_Persian As String = "00000429"
Private Const LANG_FRENCH As String = "0000040C"
Private Const LANG_GREEK As String = "00000408"
Private Const LANG_ITALIAN As String = "00000400"
Private Const LANG_GERMAN As String = "00000407"
Private Function SwitchKeyboardLang(ByVal strLangID As String) As Boolean
Dim strRet As String
On Error Resume Next
strRet = String(9, 0)
GetKeyboardLayoutName strRet
If strRet = (strLangID & Chr(0)) Then
SwitchKeyboardLang = True
Exit Function
Else
strRet = String(9, 0)
strRet = LoadKeyboardLayout((strLangID & Chr(0)), KLF_ACTIVATE)
End If
GetKeyboardLayoutName strRet
If strRet = (strLangID) Then
SwitchKeyboardLang = True
End If
End Function
Private Sub TextBox1_Enter()
SwitchKeyboardLang (LANG_ENGLISH)
End Sub
Private Sub TextBox2_Enter()
SwitchKeyboardLang (LANG_Persian)
End Sub
در كى بالا تابع GetKeyboardLayoutName strRet موردی است که شما می خواهید.
برای دریافت کد های زبان های دیگر نیز می توانید از رجیستری کامپیوتر استفاده کنید. آدرس زیر را در Regedit دنبال کنید به می توانید کد همه زبان ها را داشته باشید.
HKEY_LOCAL_MACHINE
System
CurrentControlSet
Control
Keyboard Layout
DosKeybCodes
علاقه مندی ها (Bookmarks)