به نام خدا
با سلام. از اين كد مي توانيد استفاده كنيد و آن را در رويداد open فرم مورد نظر صدا بزنيد.
به اين صورت
Private Sub Form_Load()
SetKbLayout
End Sub
Public Const KLF_ACTIVATE = &H1
Public Const LANG_EN_US As String = "00000409" 'English
Public Const LANG_Ar_As As String = "00000401" 'Arabic
Public Const LANG_FARSI As String = "00000429" 'Farsi
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Public Function SetKbLayout(Optional strId As String, VER_OS as String) As Boolean
Dim strLayoutId As String
'ÊÚííä ÓíÓÊã ÚÇãá
If strId <> "" Then GoTo 10
strOs = VER_OS
If strOs = "Windows ME" Or strOs = "Windows 98" Then
strId = LANG_Ar_As
ElseIf strOs = "Windows XP" Or strOs = "Windows 2K" Then
strId = LANG_FARSI
End If
10:
strLayoutId = String(KL_NAMELENGTH, 0)
'ÒÈÇä ÍÇÑí ÕÝÍå ßáíÏ íÓÊ
GetKeyboardLayoutName strLayoutId
If (strLayoutId = (strId & Chr(0))) Then
SetKbLayout = True
Else
strLayoutId = String(KL_NAMELENGTH, 0)
strLayoutId = LoadKeyboardLayout((strId & Chr(0)), KLF_ACTIVATE)
If IsNull(strLayoutId) Then
SetKbLayout = False
Else
strLayoutId = String(KL_NAMELENGTH, 0)
GetKeyboardLayoutName strLayoutId
If strLayoutId = (strId & Chr(0)) Then
SetKbLayout = True
Else
SetKbLayout = False
End If
End If
End If
End Function